Java基础知识

Java异常体系

2019-01-08  本文已影响24人  第四单元

一.异常分类

image.png
在Java中所有的异常对象都是派生于Throwable类的。Throwable下又分为Error和Exception两类。
Throwable的分类

Exception的分类

二.抛出异常

方法抛出异常的作用

如果遇到了无法处理的情况,那么Java的方法可以抛出一个异常。即一个方法不仅需要告诉编译器将要返回什么值,还要告诉编译器有可能发生什么错误

子类方法抛出异常的规则

如何抛出异常

捕获异常

处理捕获到的异常

try(Scanner in = new Scanner(new FileInputStream("text.txt"))) {
 //do something
}

分析堆栈跟踪元素

三.使用异常机制的技巧

3.1 异常处理不能代替简单的测试

捕获异常对资源有一定的需求。不要通过捕获异常来做判断。例如,在调用stack.pop()方法前先用stack.empty()来判断一下,而不是直接调用再捕获异常,再对异常进行处理。即通过捕获到异常来说明stack空了,这种方法不可取。

3.2不要过分细化异常

不要每句语句都加一个异常捕获

3.3利用遗传层次结构

3.4不要压制异常

《Java核心技术卷一 P492》

3.5是返回一个错误代码还是抛出异常?

例如,当栈为空时,Stack.pop是返回一个null,还是抛出一个异常?我们认为:在出错的地方抛出一个EmptyStackException异常要比在后面抛出一个NullPointerExcepion异常要更好。

3.6不要羞于传递异常

不能处理的异常要抛出到上层处理,方便上层通知用户

上一篇 下一篇

猜你喜欢

热点阅读