版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38225558/article/details/82054100

try {
     可能出现异常的代码(包括不会出现异常的代码)
} catch (Exception e) {          //()里为接收try{}代码块中出现异常的类型
     如果出现异常时的处理方式
}

try-catch的执行顺序:

①从 try{ } 代码块中第一行开始执行,执行到出现异常的代码,jvm会创建一个异常对象
②判断catch中声明的异常类型是否能捕捉到jvm创建的异常对象
       i:  能捕捉到:直接跳到catch代码块中执行。  不会结束程序,继续从catch代码块后面的代码执行
      ii:  不能捕捉到:直接打印异常信息并结束程序
③try{} 中没有出现任何异常,把try中的所有代码执行完,跳过catch继续程序

注意:

1.能被catch捕捉到的条件 ==》try中创建的异常对象的类型与catch中声明的类型一致,或者是catch中声明的类型的子类。

2.如果只有一个捕捉指定类型的catch 只能捕捉对应类型的异常对象。  如果try中创建了其他类型的异常,捕捉不到。Jvm来处理异常

3.try{}代码块中存在多行代码会抛出异常的情况下,遇到第一个异常,后面代码的异常 只会被catch捕捉到异常信息但都将不会被执行

4.那么我们如何才能处理try{}中的每一个异常呢??

① 写多个catch : 每一个catch处理一种异常        ==>    try{ }catch(){ }catch(){ }catch(){ }
       效果:当try中出现了异常,直接跳到第一个catch处判断,是否能捕捉。
            a:能捕捉:直接处理。  然后跳过trycatch往后执行
            b:不能捕捉:跳到下一个catch继续判断。如果下一个能捕捉,重复第一步的效果
            c:所有catch都不能捕捉 ==> 交给jvm处理:结束程序,在控制台打印异常信息
  ② 写一个catch  要求:catch中的异常类型必须是try中抛出的所有异常的父类
        
    注意事项:写多个catch时,下边的catch声明的异常类型不能是上边的catch声明的子类。
                      多个catch时,异常父类必须在下边。   (没有继承关系时,就不用考虑此情况)

try{  }catch(){  }catch(){  }...finally{  }                   (catch可以有多个,也可以没有 ==》 try{ }finally{ })

特点:写在finally代码块中代码,一定会被执行到
注意:①执行了 return    也会执行finally
           ②但 执行 System.exit(0)   就不会再执行finally了!!!

ex1: (此时 Integer in = new Integer("1");  不会出现异常的情况下)

ex2: (此时 Integer in = new Integer("A1");  出现异常的情况下)

ex3:  多个catch

ex4 :1个catch

ex5: return不影响finally{ }代码块中代码的执行

ex6 :    执行 System.exit(0)   ==》 便不会再执行finally{ }代码块中代码

————————————————
版权声明:本文为CSDN博主「郑清」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38225558/article/details/82054100

最新文章

  1. 谈I/O模型
  2. mySQL数据库Sql语句执行效率检查--Explain命令
  3. linux IO调度
  4. Android应用安全之Android APP通用型拒绝服务漏洞
  5. linux下python版webshell后门查杀工具
  6. ASM磁盘组空间不足--ORA-15041:DISGROUP DATA space exhausted (生产库案例)
  7. BZOJ_1180_[CROATIAN2009]_OTOCI_(LCT)
  8. silverlight 生成图表 WCF 解析XML代码.svc.cs 文件
  9. 浅析 JavaScript 的函数节流和去抖
  10. sdut 6-2 多态性与虚函数
  11. 网站生产app的一些网址
  12. [LeetCode] Dp
  13. my project 中git使用过程(基本操作流程)
  14. sql预编译&动态语句静态语句
  15. CentOS7下安装Redis5.0.2
  16. 如何在Linux(Ubuntu)上安装Redmine
  17. 为Linux配置常用源:epel和IUS
  18. Monkey脚本API简介
  19. 解决使用eclipse创建maven web项目时报Could not resolve archetype的问题
  20. Django后端项目---- Rest Framework(2)

热门文章

  1. Jmeter 正则表达式提取器详解(Regular Expression Exactor)
  2. java 库存管理
  3. WinDbg常用命令系列---!cppexr
  4. Don't rely on luck.
  5. 1-开发共享版APP(接入指南)-APP说明
  6. PHP正则表达式提取html超链接中的href地址
  7. Cogs 1632. 搬运工(二分图最小点覆盖)
  8. 特征缩放(Feature Scaling)
  9. 02-线性结构4 Pop Sequence (25 分)
  10. [golang]Golang实现高并发的调度模型---MPG模式