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


JadeQYuan
279 声望311 粉丝

知其然,知其所以然。。。