Java异常处理深入理解

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只有值传递。

  • JDK7对异常添加了新的语法糖
    • 带资源的try-catch。也就是说我们不用再手动的处理finally关闭资源或连接了。但是,too young too simple,还是乖乖用显示的关闭吧,虽然建议是用带资源的try-catch.
    • 多重捕获。catch 可以用 | 连接,捕获多个异常。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 初识异常(Exception) 比如我们在取数组里面的某个值得时候,经常会出现定义的取值范围超过了数组的大小,那么...
    iDaniel阅读 1,983评论 1 2
  • Java异常类型 所有异常类型都是Throwable的子类,Throwable把异常分成两个不同分支的子类Erro...
    予别她阅读 1,041评论 0 2
  • 概念介绍 异常是发生在程序执行过程中阻碍程序正常执行的错误事件,当一个程序出现错误时,可能的情况有如下3种: 语法...
    niaoge2016阅读 5,656评论 2 20
  • 此事,在脑海中久久挥之不去…… 那日,犬子带我参加幼儿园的春游亲子活动。上了一夜的班,甚是乏累,于是上了车靠在椅背...
    大龙蛋阅读 240评论 0 0
  • 一、多线程开发的理解以及iOS中有几种实现多线程的方法? 好处: 1、使用线程可以把程序中占据时间长的任务放到后台...
    Moon_yueyue阅读 311评论 0 0

友情链接更多精彩内容