java 异常类结构_Java 异常类

Java面向对象设计 - Java异常类

异常类层次结构

异常类层次结构从java.lang.Throwable类开始。

当抛出异常时,它必须是Throwable类的对象或其任何子类。

catch块的参数必须是Throwable类型,或其子类之一,例如Exception,ArithmeticException,IOException等。

我们可以通过从一个异常类继承我们的类来创建我们自己的异常类。

使用多个catch块

Java运行时选择适当的catch块,并从第一个catch块开始顺序寻找合适的catch时钟。

try块的多个catch块必须从最具体的异常类型排列为最通用的异常类型。

以下代码使用多个catch块的有效序列。

ArithmeticException类是RuntimeException类的子类。

如果这两个异常都在同一个try块的catch块中处理,那么最具体的类型,即ArithmeticException,必须出现在最通用的类​​型之前,即RuntimeException。try {

// Do something, which might throw Exception

}

catch(ArithmeticException e1) {

// Handle ArithmeticException first

}

catch(RuntimeException e2) {

// Handle RuntimeException after ArithmeticException

}

已检查和未检查异常

有三种类型的异常:有一些例外,有更高的可能发生。我们可以在try-catch块中处理它们。或者我们可以在调用方法/构造函数声明中指定它可能抛出异常。

错误是可能发生的异常,并且我们几乎不能处理它。例如,java.lang.OutOfMemeoryError。我们不能做任何事情从内存不足错误中恢复。

异常类层次结构中的类,它们是Error类的子类和Error类本身,属于此类别的异常。

编译器不坚持对我们的代码采取行动。如果在运行时抛出此类异常,运行时将通过显示详细的错误消息并暂停应用程序来处理它。

在运行时可能会发生异常,我们可能会从异常条件中恢复。

异常类层次结构中的类,它们是RuntimeException类的子类和RuntimeException类本身,属于此类别。

编译器不坚持对我们的代码采取行动。

第一类中的异常称为检查异常,因为编译器检查它们是否在代码中处理。

Throwable类,Exception类和Exception类的子类(不包括RuntimeException类及其子类)称为检查异常。

所有未检查异常的异常称为未检查异常,因为编译器不检查它们是否在代码中处理。

Error类,Error类的所有子类,RuntimeException类及其所有子类都是未检查的异常。

我们可以处理未检查的异常,如果我们想,编译器不会强迫我们这样做。

用于处理已检查或未检查异常的程序结构是相同的。

以下代码显示如何处理已检查的异常:import java.io.IOException;

public class Main {

public static void main(String[] argv) {

try {

int input = System.in.read();

if (input != -1) {

System.out.println(input);

}

} catch (IOException e) {

System.out.print("IOException occurred.");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值