TIJ C12 异常

TIJ Chapter 12

Exceptions

系统特殊情况分类

  • Error
  • RuntimeException
  • Exception

自定义异常

异常是作为类而存在的,因此也可以自定义异常。
自定义的异常需要extends Exception即可。

异常声明

  • 在方法的最后加上throws ExceptionName即可,表示该方法有可能会抛出这些异常。

异常处理

  • 使用try代码块作为监控区域来捕捉异常
  • 使用catch代码块来处理相应的异常,一个try可以对应多个catch,且派生类异常应先处理,基类异常后处理,否则派生类会被覆盖。
  • 最后可以跟上finally语句,finally里的代码无论如何都会被执行,因此可以用来放清理内存的代码。要注意多个层次的finally的排列

继承中的异常

  • 继承类的覆盖方法只能抛出基类方法的异常说明里列出的异常
  • 实现接口无法为继承类覆盖方法增加基类方法里没有的异常声明。
  • 如果是继承类里的新方法,可以随意声明异常。
  • 基类方法里声明的异常,继承类里的覆盖方法可以不声明。
    也即:对于异常声明,只能从基类方法里减,不能增加。
  • 派生类构造器必须包含基类构造器的异常声明。
  • 不能基于异常说明来重载方法。

异常相关方法

  • e.printStackTrace() 可以追踪打印出异常的产生各栈层级。括号中可以指定输出的流。
  • String getMessage()
  • String getLocalizedMessage()
  • throw (Exception)e.fillStachTrace() 用于重新抛出异常时,将当前栈层级当做异常产生源。
  • initCause() 用于异常链的构筑 == 但是书里并没讲清楚!! ==

posted on 2017-04-17 16:16  hazelnut  阅读(56)  评论(0)    收藏  举报

导航