Java的基本理念是“结构不佳的代码不能运行”。
1.概念
- 用强制规定的形式来消除错误处理过中随心所欲的因素.
- 使用异常所带来的一个相当明显的好处是,它往往能够降低错误处理代码的复杂度.
2.基本异常
- 异常情形是指阻止当前方法或作用于继续执行的问题.
- 标准异常都有两个构造器:一个是默认构造器,另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器.
3.捕获异常
- 监控区域:一段可能产生异常的代码,并且后面跟着处理这些异常的代码.
- try块:跟在关键字try之后的普通程序块.
- 异常处理程序:抛出的异常必须在某处得到处理,这个"地点"就是异常处理程序,而且针对每个要捕获的一场,得准备相应的处理程序.
- 异常处理程序紧跟在try块之后,以关键字catch表示.
- 异常处理模型:终止模型,恢复模型(不实用).
4.创建自定义异常
- 要自定义异常类,必须从已有的异常类继承,最好的选择是相近的异常类继承.
5.异常说明
- 异常说明使用了附加的关键字throws,后面接一个所有潜在异常类型的列表.
6.捕获所有异常
- Exception是与编程有关的所有异常类的基类.
7.Java标准异常
- Throwable这个Jaba类被用来表示任何可以作为一场被抛出的类.
- Throwable对象可分为两种类型(指从Throwable继承而得到的类型):Error(表示编译时和系统错误),Exception(可以被抛出的基本类型).
- 特例:RuntimeException(或任何从它继承来的异常),编译器不需要一场说明,其输出报告给了System.err.
8.使用finally清理
- 无论异常是否被抛出,finally子句总能被执行.
9.异常的限制
- 当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的一场.
10.构造器
- 处理具有可以失败的构造器,且需要清理的对象:对于每一个构造器,都必须包含在其自己的try-finally语句块中,并且每一个对象构造器必须都跟随一个try-finally语句块以确保清理.
11.异常匹配
- 抛出异常的时候,异常处理系统会按照代码的书写顺序找出"最近"的处理程序.
- 找到匹配的处理程序之后,它就认为异常将得到处理,然后就不再继续查找.
- 查找的时候并不要求抛出的异常同处理程序所声明的异常完全匹配,派生类的对象也可以匹配其基类的处理程序.
12.其他可选方式
- 异常处理的一个重要原则:只有在知道如何处理的情况下才捕获异常.
- 异常处理的一个重要目标:把错误处理的代码同错误发生的地点相分离.
13.异常使用指南
- 应该在下列情况下使用异常:
1.在恰当的级别处理问题.
2.解决问题并且重新调用产生异常的方法.
3.进行少许修补,然后绕过异常发生的地方继续执行.
4.在别的数据进行计算,以代替方法预计会返回的值.
5.把当前运行环境下能做的事情尽量做完,然后把相同的异常重抛到更高层.
6.把当前运行环境下能做的事情尽量做完,然后把不同的异常重抛到更高层.
7.终止程序.
8.进行简化.
9.让类库和程序更安全.
END
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。