第7章 异常、断言和日志
-
异常结构分类
所有的异常都是由 Throwable 继承而来,但在下一层立即分解为两个分支:Error 和 Exception。Exception这个层次结构又分解为两个分支: 一个分支派生于RuntimeException; 另一个分支包含其他异常。- 派生于 RuntimeException 的异常包含下面几种情况(只是简单列举,可能包含的不完全)出现这个异常一般都是自己的代码有问题
- 错误的类型转换。
- 数组访问越界。
- 访问 null 指针。
- 其他异常
- 试图在文件尾部后面读取数据
- 试图打开一个不存在的文件
- 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在
- 错误的类型转换。
- 派生于 RuntimeException 的异常包含下面几种情况(只是简单列举,可能包含的不完全)出现这个异常一般都是自己的代码有问题
-
抛出异常的四种情况
- 调用一个抛出受查异常的方法。
- 运行中发现错误,利用throw语句抛出一个受查异常。(程序自主,代码可控)
- 程序出现错误,抛出非受查异常。(程序不自主,代码不可控)
- Java虚拟机出现内部错误
-
捕获异常。利用try/catch来捕获异常。
- 如果try块中出现异常,程序将会跳过剩下的代码。
- 程序将执行catch块中的代码。
- 如果try块中抛出了catch中没有声明的异常,程序会立即退出。
-
处理异常的几个技巧
-
异常处理不能代替简单的测试
-
不要过分的细化异常
-
利用异常层次结构
-
不要压制异常
-
在监测错误时,严格要比放任好
-
不要害怕传递异常
-
-
断言用处不是很多,现在用IDE自带的断点可能会好一点
-
日志管理可以使用单独的插件或者工具,最好项目中的日志都是统一的
因为目前对于异常的处理还是比较少,感觉只要了解异常的处理方法和实际码代码中异常的正常流程即可。
就这样吧,结束。