java中异常处理机制事件机制_Java异常处理机制

Java程序在运行期间,可能会发生不可被期望的事件,它会阻止程序按照程序员的预期正常执行,这就是异常。异常发生时,我们不应该让程序自生自灭,把输出的错误信息返回给用户,因此我们需要对异常进行处理,Java有着非常优秀的异常处理机制。直接上Java异常类之间的结构图,一目了然的看明白很多问题。

d497f54bb69e23d3aa5fdf56fede03f4.png

1、Throwable类是Java异常类型的顶层父类,一个对象只能是Throwable类(或者子类)的实例,它才能是一个异常的对象,才能被异常处理机制识别。

2、Throwable类派生出Error类和Exception类。

错误:Error类以及它的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,我们应该关注Exception为父类的分支下的异常类。

异常:Exception类以及它的子类,代表程序运行时发送的各种不期望发生的事件,可以被Java异常处理机制使用,是异常处理的核心。

3、非检查异常 (unchecked exception):Error和RuntimeException以及它们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。

检查异常(checked exception):除了Error和RuntimeException的其它异常。javac强制要求程序员为这些异常做预备处理工作(try...catch..finally..)或者方法上用throws子句生命抛出,否则编译不会通过。这样的异常一般是程序运行环境导致的,例如FileNotFoundException,就是程序更换运行环境可能会找不到对应的文件。

自定义异常

如果要定义异常类,则需要扩展Exception类,这样自定义的异常类属于检查异常;如果想要自定义非检查异常类,则需要扩展RuntimeException。

按照惯例,自定义的异常类应该包含如下的构造函数:

(1)一个无参构造函数;

(2)一个带有String参数的构造函数,并传递给父类的构造函数;

(3)一个带有String参数和Throwable参数,并都传递给父类构造函数;

(4)一个带有Throwable 参数的构造函数,并传递给父类的构造函数。

1 public class IOException extendsException2 {3 static final long serialVersionUID = 7818375828146090155L;4

5 publicIOException()6 {7 super();8 }9

10 publicIOException(String message)11 {12 super(message);13 }14

15 publicIOException(String message, Throwable cause)16 {17 super(message, cause);18 }19

20 publicIOException(Throwable cause)21 {22 super(cause);23 }24 }

异常处理避免出现的问题

1、不要在finally中使用return;

2、不要在finally中抛出异常;

3、减轻finally的任务,不要在finally中做一些其它的事情,finally块仅仅用来释放资源最合适;

4、将尽量所有的return写在函数的最后面,而不是try...catch..finally中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值