Java异常类的层次

异常类的层次

throwable

所有的异常类是从 java.lang.Exception 类继承的子类。
异常分成两种: Error和Exception。

ERROR

Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
Error 用来指示运行时环境发生的错误。
例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

错误不是异常,而是脱离程序员控制的问题。在编译期也检查不到,错误在代码中通常被忽略。

Exception

而Exception分为运行时异常(RuntimeException)和非运行时异常。

异常类有两个主要的子类:IOException 类和 RuntimeException 类。

unchecked exception(非检查异常):

也称运行时异常,是RuntimeException其子类的异常,比如常见的NullPointerException、IndexOutOfBoundsException。
对于运行时异常,java编译器不要求必须进行异常捕获处理或者抛出声明。

checked exception(检查异常,编译异常):

也称非运行时异常(运行时异常以外的异常就是非运行时异常),java编译器强制程序员必须进行捕获处理,这些异常在编译时不能被简单地忽略。
非运行时异常是RuntimeException以外的异常。如:IOException、SQLException等。
最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了。

throw / throws

如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

finally关键字

finally 关键字用来创建在 try 代码块后面执行的代码块。
无论是否发生异常,finally 代码块中的代码总会被执行。
在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
finally 代码块出现在 catch 代码块最后。

自定义异常

所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

注意
异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值