异常类型:

第12章 异常 - 图1


12.4 创建自定义异常

创建自定义异常类并继承Throwable类或其子类


  1. public class newException extends Exception{
  2. public newException(){} //无参构造器 会自动产生最方便
  3. public newException(String msg){
  4. super(msg);
  5. }
  6. }

12.6 printStackTrace():

将打印“从方法调用处直到异常抛出处”的方法调用序列 printStackTrace()信息可由getStackTrace()直接访问

  • 返回一个栈数组,栈顶是最后一个调用的方法,栈底是第一个调用的方法

12.6.3 异常链

在捕获一个异常后抛出另一个异常,把原始异常信息保存起来,为异常链 异常链写法:

  1. 将catch到的异常对象作为cause参数放入构造器传递给下一个异常
  2. 创建异常对象实例化后用initCause(原始异常对象)
  1. public static void testOne() throws IOException{
  2. throw new IOException("第一个异常");
  3. }
  4. public static void testTwo() throws Exception{
  5. try {
  6. testOne();
  7. }catch (IOException e){
  8. throw new IOException("第二个异常",e);
  9. /* 写法二:
  10. Exception e1 = new IOException("第二个异常");
  11. e1.initCause(e);
  12. throw e1;
  13. */
  14. }
  15. }
  16. public static void main(String[] args) throws Exception {
  17. try{
  18. testTwo();
  19. }catch (Exception e){
  20. e.printStackTrace();
  21. }
  22. }

12.8 finally

除了System.exit(1)以外,其他任何情况都会执行finally,甚至跳过break,continue,return等语句。