异常类

How

 1     XXMethod()throws Child1Exception,Child2ExCeption//除了RuntimeExceptiong及其子类,均要throws异常
 2     {
 3         try
 4         {
 5             //抛出Child1Exception对象
 6             new throw Child1Exception();
 7             new throw Child2Exception();
 8         }
 9         catch (Child1Exception e)//捕获抛出的异常对象并处理
10         {
11             e.printStackTrace();
12             ...
13         }
14         catch (Child2ExCeption e)
15         {
16             e.printStackTrace();
17             ...
18         }
19         ...
20         finally
21         {
22             要释放的资源
23             或一定要执行的代码
24         }
25     }

自定义异常实例

 1 /**
 2 *自定义两个异常:除数为负数异常,除数为零异常
 3 *throws 异常类1,异常类2 ,写在函数后面,表示这个函数可能有问题
 4 *throw new 异常1(..) ,写在函数里面,抛出异常1对象,将供给catch
 5 *catch(异常1 e){}将捕获抛出的异常1的对象,赋给e,然后再操作e
 6 *当throw执行时,其后的语句将不会执行,与return类似
 7 *RuntimeException及其子类是特殊的异常类,可以直接抛出起对象,意义在于发生异常时终止程序,提示须改程序
 8 *finally:主要用于释放资源!如操作数据库异常,不做finally处理,数据库连接将不会断开,占用资源
 9 *注意1:子类继承父类,那么子类抛出的异常只能是父类异常的子类对象或则子集
10 *注意2:父类或接口没有定义的异常对象,子类只能try不能抛
11 */
12 class FuShuException extends Exception
13 {
14     FuShuException(){
15         super();
16     }
17     //声明负数异常的构造方法,调用父类的构造方法
18     FuShuException(String msg){
19         super(msg);
20     }
21 }
22 class ZeroException extends Exception
23 {
24 
25     //声明负数异常的构造方法,调用父类的构造方法
26     ZeroException(String msg){
27         super(msg);
28     }
29 }
30 class Test
31 {
32     public double count(int a,int b)throws FuShuException,ZeroException
33     {
34         //RuntimeException可直接抛出,而并没有throws,也没有catch,其子类如NullPointerException,ArithmeticException等
35         if(a<0) throw new RuntimeException("被除数a<0");
36         else if(b<0) throw new FuShuException("负数异常: by / 负数");
37         else if(b==0) throw new ZeroException("除数零异常:by / 0");
38         return a/b;
39     }
40 }
41 class YiChang 
42 {
43     public static void main(String[] args) 
44     {
45         try{
46             Test t=new Test();
47 
48             System.out.println(t.count(5,-1));
49             
50         }
51         catch(FuShuException e){
52             e.printStackTrace();//异常对象:错误信息+错误代码行数
53             //System.out.println(e.toString());//异常对象:错误信息
54             //下面这一句可以测试出finally的作用
55             //return;
56         }
57         catch(ZeroException e){
58             e.printStackTrace();//异常对象:错误信息+错误代码行数
59             //System.out.println(e.toString());//异常对象:错误信息
60         }
61         finally{
62             System.out.println("over");//finally里面写一定会执行的语句(除非调用System.exit(0)退出jvm虚拟机)
63         }
64         //注意,这里与finally不同的是,如果异常执行并停止程序的时候,下面的语句不执行,而finally中的会执行
65         System.out.println("over2");
66     }
67 }

 

posted @ 2015-08-02 21:27  洱海  阅读(137)  评论(0编辑  收藏  举报
.First { margin: 10px 0; font-family: 'Microsoft Yahei'; text-align: left; padding: 6px 20px; color: #fff; background: #55895B; font-size: 20px; border-radius: 4px; clear: both; } .Second { margin: 10px 0; font-family: 'Microsoft Yahei'; padding: 6px 20px; background: #93C8A2; color: white; font-size: 18px; border-radius: 4px; clear: both; } .Third { margin: 10px 0; padding: 6px 20px; font-family: 'Microsoft Yahei'; margin: 15px 0; font-size: 16px; color: black; background: #C6EFD2; border-radius: 4px; clear: both; } .note { margin: 10px 0; padding: 15px 20px 15px 60px; background: #FCFAA9 url('http://images.cnblogs.com/cnblogs_com/libaoheng/305804/o_yellow-pin.png') no-repeat 20px 0; font-size: 15px; font-family: 'Microsoft Yahei'; box-shadow: 0 0 8px #aaa; clear: both; } .demo { text-align: left; padding: 6px 20px; overflow: auto; border-radius: 4px; background: orange; color: #fff; font-size: 16px; clear: both; } .cnblogs_Highlighter { border: solid 1px #ccc; clear: both; } .cnblogs_code { background: #EFFFF4; border: solid 0px #939393; font-size: 14px; clear: both; padding: 10px 20px; } .cnblogs_code pre { font-size: 14px; } .cnblogs_code span { font-family: Courier New; font-size: 14px; }