Java异常框架

一、Java异常框架

Java异常框架的顶级父类是Throwable,下有两个子类Error和Exception。
Error:指程序运行时发生的严重错误,一般无法恢复,如JVM 内存溢出和IO错误等。
Exception:指程序中的异常,分为检查性异常和非检查性异常。如IO异常和运行时异常等。
在这里插入图片描述

二、检查性异常和非检查性异常的区别

检查性异常:指不处理不能通过编译的异常,需要进行try/catch或throws抛出异常,由调用者来处理。
非检查性异常:指不处理也可以通过编译的异常,可以不进行处理。

ps:所谓检查性异常和非检查性异常就是Java为了程序的稳定性,强制要求处理已知的可能发生的异常,否则无法通过编译。如IO流已经在close方法里声明可能抛出IOException,所以就必须进行处理。而RuntimeException是在运行时才出现的异常,比如3/0(3除以0)会报ArithmeticException异常,这是随参数决定的,不可提前得知,所以就没有强制处理。总之就是要求尽量避免异常,对已知的异常进行处理,保证程序的稳定性。

三、关键字throws和throw的区别

throws:用在方法声明上,表示抛出一个异常由调用者来处理。
throw:用在方法体中,表示抛出一个异常。

四、关键字try/catch和finally

try/catch:对可能异常的代码块进行捕获异常,并进行相应的处理。
finally:无论是否捕获到异常都要执行的代码。在catch中return或者抛出异常,也会执行,除非出现严重错误导致程序停止或是使用System.exit()退出程序。
在这里插入图片描述
在这里插入图片描述
ps:根据以上代码很明显可以看出,finally是在return中执行的,既return逻辑执行之后,真正的返回之前。因为此次使用的自增是在执行之后自增,说明count++已经执行了,但是这个方法并没有结束,而是接着执行了finally中的代码,但是最终返回的还是0。这也顺便说了return其实分为了两个步骤,先确定返回值,再执行return,而finally就在这之间执行。

五、常见内置异常

检查性异常:
IOException:IO异常
ClassNotFoundException:找不到类异常
InterruptedException:线程被中断异常

非检查性异常:
NullPointerException:空指针异常
ArrayIndexOutOfBoundsException:数组下标越界异常
ClassCastException:类型转换异常
ArithmeticException:运算异常

六、自定义异常

编写自定义异常类时需要记住下面的几点:
1、所有异常都必须是 Throwable 的子类。
2、如果希望写一个检查性异常类,则需要继承 Exception 类。
3、如果希望写一个非检查性异常类,则需要继承 RuntimeException 类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值