首页 > 代码库 > java 异常总结

java 异常总结

一:异常结构图及基本概念

Throwable类:所有异常与错误的超类。

Error类:程序无法处理的错误,表示运行应用程序中较严重问题,不需要捕获

Exception类:程序本身可以处理的异常,可以捕获

RuntimeException及其子类:可以捕获此异常,也可以不捕获。建议不捕获。

非运行时异常:必须捕获的异常。

二 try...catch...finally

1 try{2     //监控有可能出现异常的代码       3 }catch(Exception e){4     //捕获异常后执行的代码       5 }finally{6     //不管是否捕获到异常,都要执行的代码,常用于释放资源  7 }

try...catch...finally不能单独使用,只能使用try...catch,try...finally;try...catch...finally这三种结构

try...catch...finally可以嵌套

 1 public class Test2 { 2  3     public static void main(String[] args) { 4         // TODO Auto-generated method stub 5         int []a={1,2,3}; 6         try{ 7             //System.out.println(a[4]); 8             System.out.println(a[0]); 9         }catch(ArrayIndexOutOfBoundsException e){10             e.printStackTrace();11         }finally{12             System.out.println(a[2]);13         }14     }15 16 }

 

三:throw,throws

throws:用于方法体外。声明可能抛出的所有异常信息并交给该方法的调用者处理或继续抛出异常。

throw:用于方法体内,抛出一个具体的异常。可以直接在方法体内捕获异常,或者通过throws抛出异常。

 

 1 public class Test3 { 2  3     public static void main(String[] args) throws Exception { 4         // TODO Auto-generated method stub 5         int []a={1,2,3}; 6         //System.out.println(a[0]); 7         System.out.println(a[4]); 8     } 9 10 }

四:自定义异常

 在程序中使用自定义异常类,大体可分为以下几个步骤。
(1)创建自定义异常类。(继承Exception或Throwable,需要时可重写getmessage方法)。
(2)在方法中通过throw关键字抛出异常对象。
(3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
(4)在出现异常方法的调用者中捕获并处理异常。

 1 public class Test4 { 2  3     /** 4      * @param args 5      */ 6     public static void main(String[] args) { 7         // TODO Auto-generated method stub 8             try { 9                 throw new MyException("aaa");10                 11             } catch (MyException e) {12                 // TODO Auto-generated catch block13                 e.printStackTrace();14                 //e.getMessage();15             }16     }17 18 }19  20 class MyException extends Exception{21     String message;22     MyException(String s){23         super(s);24     }25 /*    MyException(String s){26         this.message=s;27     }28     public String getMessage(){29         return message;30     }*/31     32 }

 

 

 

 

参考博客:

深入理解java异常处理机制

Java异常体系结构

java异常处理的throw和throws的区别

 

java 异常总结