本文主要是介绍Thinking in java 第12章 通过异常处理错误 笔记+习题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Thinking in java 第12章 通过异常处理错误
学习目录
12.1 概念
1. 使用一场所带来的一个好处是,它忘完更够降低错误处理代码的复杂度。如果不使用异常,那么就必须检查特定的的错误,并在程序中的许多地方去处理它。而如果使用异常,就不必在方法调用处进行检查,并且只需在一个地方处理错误,即异常处理程序中。这使得代码的阅读、编写和调试工作更加井井有条。
12.2 基本异常
1. 同Java其他对象的创建一样,将使用new在堆上创建异常对象。
2. 异常最重要的方面之一就是如果发生问题,他们将不允许程序沿着其正常的路径继续走下去。
3. 所有标准异常类都有两个构造器:一个是默认构造器,一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器。
throw new NullPointerException("t = null");
4. 异常返回的“地点”和普通方法调用返回的“地点”不同,可能离得很远,也可能跨越方法调用栈很多层次。
5. 能够抛出任意类型的Throwable对象是异常类型的根类。
12.3 捕获异常
1. 格式如下:
try{//Code that might generate exceptions
} catch (Type1 id1) {// Handle exceptions of Type1
} catch (Type2 id2) {// ...
} ...
2. 在try块内部,许多不同的方法调用可能会产生类型相同的异常,而你只需要提供一个针对此类型的异常处理程序。
3. 异常处理理论上有两种基本模型:中止模型和恢复模型。Java支持中止模型,如果想要Java实现类似恢复的行为,那么在遇到错误时就不能抛出异常,而是调用方法来修正。或者把try块放在while里,直到得到满意的结果。
12.4 创建自定义异常
1. 要自己定义异常类,必须从已有的异常类继承,最好是选择意思详尽的异常类继承(不过并不容易找)。
class SimpleException extends Exception {SimpleException() {}SimpleException(String msg) { super(msg); }
}public class A {public void f() throws SimpleException {print("...");throw new SimpleException();}public static void main(String[] args) {try {new A().f();} catch(SimpleException e) {print("Catch!");}}
}
2. printStackTrace()方法是在Throwable中的(Exception继承它),它将打印“从方法调用处直到异常跑出处”的方法调用序列。可加上参数“System.out”直接显示在输出中,默认版本则被输出到标准错误流(System.err)。
3. 异常与记录日志(P255例,看完18章再回来看)。
12.5 异常说明
1. 异常说明属于方法声明的一部分,紧跟在形式参数列表之后。
2. 可以不止一个。也可以声明了之后不抛出,但抛出后要么声明要么处理。
12.6 捕获所有异常
1. 举例说明了一些方法,如:printStackTrace()、getStackTrace()(用于配合后者进行遍历栈轨迹)、StackTraceElement、fillInStackTrace()(更新异常发生地)。
2. 异常链:在捕获一个异常后抛出另一个异常,并希望把原始异常信息保存下来。
3. 现在所有Throwable的子类在构造其中都可以机收一个cause对象作为参数,而只有Error(用于Java虚拟机报告系统错误)、Exception、RuntimeException提供了带cause参数的构造器,其他类型要用initCause()方法而不是构造器。
12.8 使用finally进行清理
1. 对于一些代码,可能会希望无论try块中的异常是否抛出,它们都能得到执行。这通常适用于内存回收之外的情况。
try{//Code that might generate exceptions
} catch (Type1 id1) {// Handle exceptions of Type1
} catch (Type2 id2) {// ...
} finally {// ...
}
2. 用途:把除内存之外的资源恢复到它们的初始状态,包括:已经打开的文件或网络链接,在屏
这篇关于Thinking in java 第12章 通过异常处理错误 笔记+习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!