Java中异常处理机制

解析:

Java异常机制定义了Throwable类,其中Exception类和Error类均是其子类。

(1)Error类表示Java运行时环境出现的错误,是程序无法处理的错误,表示运行应用程序中较严重的问题,大多数与代码编写者的操作无关,而表示代码运行时JVM出现的问题,例如:OutOfMemoryError表示虚拟机无法为对象分配足够的空间;StackOverflowError表示虚拟机无法分配足够的栈内存,当程序无限制使用递归,会抛出该错误。

(2)Exception类表示程序本身可以处理的异常。Java异常可以分为可检测异常和非检测异常。

不可检测异常(Unchecked Exception或Runtime Exception):编译器不要求强制处理的异常,也称为运行时异常,都是RuntimeException类及其子类,例如:NullPointerException表示空指针异常,若对象为空,但调用其属性或方法,会抛出该异常;ArithmeticException表示计算异常,若在除法中,除数为0,会抛出该错误;ArrayIndexOutOfBoundsException表示数组下标越界异常,若数组下标超出数组范围,会抛出该异常;ClassCastException表示类型转换异常,若进行强制类型转换时,类型不同,会抛出该异常。

可检测异常(Checked Exception):编译器要求必须处理的异常,即在eclipse开发过程中,就必须处理的异常。例如:ClassNotFoundException表示通过类名称去加载类时,若找不到该类就会抛出异常。

处理:

异常的处理方式有两种,分别是捕获异常,声明异常。

(1)捕获异常------通过try-catch-finally语句

上面过程的详细解析:

try:

try语句指定了一段代码,该段代码就是异常捕获并处理的返回。在执行过程中,当任意一条语句产生异常时,就会跳过该条语句中后面的代码。代码中可能会产生并抛出一种或多种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理。

注意:一个try语句必须带有至少一个catch语句块或一个finally语句块,当异常处理的代码执行结束以后,不会回到try语句中执行尚未执行的代码。

catch:

每个try语句可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。

常用方法如下(继承自Throwable类):printStackTrace()方法用来跟踪异常事件发生时堆栈的内容

注意:多个catch中,异常类之间有继承关系时,在顺序安排上应注意,子类放在前面,父类放在后面,即先捕获子类异常再捕获父类异常。

finally:

不管是否发生异常,都必须要执行。通常finally中关闭程序块已打开的资源,例如关闭文件流,释放数据库连接等。

(2)声明异常---通过throws语句

程序中的方法可能会因某些错误而引发异常,但不希望在这个方法中处理这些异常,而希望调用它的方法来统一处理,这个时候可以使用throws关键字来声明这个方法将会抛出异常,而该方法的任何调用者必须遵守处理(立即处理)或声明规则(继续抛出)。最后抛出至main方法,main方法也可以使用throws关键字声明抛出异常,交由JVM来处理。

总结:

异常类型:一张图

异常处理:处理(try-catch-finally)or不处理(throws)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值