Java Exception处理逻辑

  • java.lang.Throwable
    • java.lang.Error
    • java.lang.Exception
      • java.lang.RuntimeException

Throwable是所以java异常或错误的超类,即指一切可抛出的内容。

Throwable包含2个子类:Error和Exception。

Error指的是严重问题如JVM内存溢出,不应该由代码捕获的异常或错误,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等,类似的错误没有比jvm更专业的了,交由jvm处理是最好的;

Exception指的是可以由代码捕获的错误,分为2类:CheckedException和UnCheckedException:

CheckedException指的是可检查异常,Java编译时会强制检查,必须用try...catch...来捕获,在编译时期需要做处理,否则编译不通过,如IOException等;

UnCheckedException值的是不可检查异常,可以不用catch的异常,包含RuntimeException及其子类,运行时期生产的异常,常见的如数组越界(ArrayIndexOutOfBoundsException),算术条件错误(ArithmeticException),空异常(NullPointerException),没有找到对应类(ClassNotFoundException)等;


  • try...catch...finish..和throw处理逻辑
try后面可有多个catch和一个finally代码块,必须包含一个catch或finally;
try代码块抛出exception后,jvm会寻找合适的catch且只会执行一个catch模块,一旦别catch就不会再向上一级catch传递,所以catch时要把父类的exception写在最后,防止先执行了父类,后面的catch就没有意义了,如果没有最终没有找到对应的catch,则交由jvm来处理;
无论是否执行catch代码,finally模块都会执行,当try或catch中遇到reuturn语句,finally代码块会在return前被执行,在下面4中特殊情况下,finally代码块将不会执行:
  1. finally代码块中发生异常;
  2. 在前面代码中执行了System.exit()退出程序;
  3. 程序所在线程shutdown
  4. cpu被关闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值