?
从继承关系可知:Throwable 是异常体系的根,它继承自Object 。Throwable 有两个体系:?Error 和Exception.
Error表示严重的错误,程序对此一般无能为力,例如:
?Exception则是运行时的错误,它可以被捕获并处理。某些异常是应用程序逻辑处理的一部分,应该捕获并处理。
例如:?
????????还有一些异常是程序逻辑编写不对造成的, 应该修复程序本身。例如:
Exception又分为两大类:
?异常的捕获:
????????捕获异常使用try...catch 语句,把可能发生异常的代码放到try {...} 中,然后使用catch 捕获对应的Exception及好类
比如:
public static void main(String[] args) {
try (Scanner in = new Scanner(System.in)) {
//获取输入时,可能产生InputMismatchException
// 输入非法的内容: a
// JVM创建一个 InputMismatchException类型的异常对象,并抛出
//程序会从try块退出
int n1 = in.nextInt();
int n2 = in.nextInt();
System.out.printf("%d÷%d=%d",n1,n2,n1/n2);
}catch(NullPointerException ex) {
System.out.println("哎呦,空指针了!");
}catch(InputMismatchException ex) {
System.out.println("哎呦,输入错误了!");
}catch(ArithmeticException ex) {
System.out.println("哎呦,计算错误了!");
}
}
当输入a时,产生InputMismatchException,输出:哎呦,输入错误了!
当n2输入0时,则产生ArithmeticException,输出:哎呦,计算错误了!
小结
- Java使用异常来表示错误,并通过try ... catch 捕获异常;
- Java的异常是class(类)?,并且从Throwable 继承;
- Error是无需捕获的严重错误,Exception 是应该捕获的可处理的错误;
- RuntimeException无需强制捕获,非RuntimeException (Checked Exception)需强制捕获,或者用throws 声明;
- 不推荐捕获了异常但不进行任何处理。
?