Java异常处理深入理解

2017-10-16  本文已影响0人  winyiwin

Java异常管理是通过try、catch、throw、throws、finally进行管理。

try 和 catch类似于“一夫多妻制”,一个try代码块的声明,必须和(一个或多个catch)或finally块相对应。
catch的作用域被限制在"丈夫"声明的语句块中,catch也管不了其他try语句抛出的异常,就是自家的事情还管不了,没空管别人家的。例外情况是在try中嵌套声明try-catch

// try1
try {
  // 丈夫1
  try{
    // try子块
  } catch (Ex e) {
    //子媳妇
  }
}  catch (Ex e) {
    //小媳妇
} catch (Ex e) {
  //正房
}
//try2
try {
  //丈夫2
} finally {

}

try1块有两个媳妇(小媳妇和正房,她们不会管try2的异常,但是会管try子块的异常)。小媳妇为正房的子类,必须声明在正房之前,否则会报已经被捕获的错误。
finally块除了在异常发生之前使用System.exit(0);手动停止程序 和 未进入try块的情况,都会执行。在try中使用 return;return sth; finally块都会执行。。并且在finally中使用return sth;如果基本数据类型,则覆盖返回;若是引用数据类型则修改堆中对象的值返回,这也很好说明了Java只有值传递。

异常有罪,且用且珍惜。不应当把异常处理机制作为流程处理机制来用

上一篇 下一篇

猜你喜欢

热点阅读