Java异常----自定义异常类(throw和throws关键字的用法)

Java的异常处理的五个关键字, trycatchfinallythrowthrows 的关系:

处理异常方式: 1  try-catch  捕获到异常后在catch中进行处理

                          2  throws    在方法的开始出throws异常,调用该方法的地方处理该异常


一个方法在声明时可以使用throws声明抛出所要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作。

•用户定义的异常同样要用try--catch捕获,但必须由用户自己抛出 throw new MyException()。
•异常是一个类,用户定义的异常必须直接或间接继承自Throwable或Exception类,建议用Exception类。
例如:

[java] view plaincopy
  1. package com.mys.ajax;  
  2.   
  3. /**自定义异常类, 
  4.  * 当方法传递的是负数是发生MyException 
  5.  */  
  6. public class MyException extends Exception {  
  7.   
  8.     String message;  
  9.     public MyException(int n) {  
  10.         message = n+"不是正数";  
  11.     }  
  12.     public String getMessage() {  
  13.         return message;  
  14.     }  
  15.     public void setMessage(String message) {  
  16.         this.message = message;  
  17.     }  
  18.   
  19. }  
[java] view plaincopy
  1. package com.mys.ajax;  
  2.   
  3. public class TestMyException {  
  4.   
  5.     public void check(int n) throws MyException{  
  6.         if(n<0){  
  7.             throw new MyException(n);//抛出异常,结束方法check()时执行  
  8.         }  
  9.         double number = Math.sqrt(n);  
  10.         System.out.println(n+"的平方根是"+number);  
  11.     }  
  12.       
  13.       
  14.     public static void main(String[] args) {  
  15.         TestMyException test = new TestMyException();  
  16.         try {  
  17.             test.check(8);//一般在最后调用该法的的方法(如main)体中处理异常  
  18.             test.check(-2);  
  19.         } catch (MyException e) {//必须要捕获异常  
  20.             // TODO Auto-generated catch block  
  21.             e.printStackTrace();  
  22.         }  
  23.           
  24.     }  
  25.   
  26. }  

执行结果如下:

com.mys.ajax.MyException: -2不是正数
at com.mys.ajax.TestMyException.check(TestMyException.java:7)
at com.mys.ajax.TestMyException.main(TestMyException.java:18)
8的平方根是2.8284271247461903

自定义异常还可以是多个:


以下是分享网友的:


[java] view plaincopy
  1. /*  
  2. 异常练习1 
  3. */  
  4.   
  5. class NoValueException extends Exception  
  6. {  
  7.     NoValueException(String msg)  
  8.     {  
  9.         super(msg);  
  10.     }  
  11. }  
  12.   
  13.   
  14. interface Shape  
  15. {  
  16.     void getArea();  
  17. }  
  18.   
  19. class Rec implements Shape  
  20. {  
  21.     private int len , wid;  
  22.   
  23.     Rec(int len , int wid) throws NoValueException  
  24.     {  
  25.         if( len <= 0 || wid <= 0)  
  26.             throw new NoValueException("出现非法值!");  
  27.               
  28.         this.len = len;  
  29.         this.wid = wid;  
  30.     }  
  31.   
  32.     public void getArea()  
  33.     {  
  34.   
  35.   
  36.         System.out.println(len*wid);  
  37.     }  
  38.   
  39. }  
  40.   
  41. class ExceptionTest  
  42. {  
  43.         public static void main(String [] args)  
  44.         {  
  45.             try  
  46.             {  
  47.                 Rec r = new Rec(-3,4);  
  48.                 r.getArea();      
  49.             }  
  50.             catch ( NoValueException e)  
  51.             {  
  52.                 System.out.println(e.toString());  
  53.             }  
  54.   
  55.             System.out.println("Over");  
  56.   
  57.         }         
  58. }  



[java] view plaincopy
  1. /*  
  2. 异常练习2 
  3. */  
  4.   
  5. class NoValueException extends RuntimeException  
  6. {  
  7.     NoValueException(String msg)  
  8.     {  
  9.         super(msg);  
  10.     }  
  11. }  
  12.   
  13.   
  14. interface Shape  
  15. {  
  16.     void getArea();  
  17. }  
  18.   
  19. class Rec implements Shape  
  20. {  
  21.     private int len , wid;  
  22.   
  23.     Rec(int len , int wid) //throws NoValueException  
  24.     {  
  25.         if( len <= 0 || wid <= 0)  
  26.             throw new NoValueException("出现非法值!");  
  27.               
  28.         this.len = len;  
  29.         this.wid = wid;  
  30.     }  
  31.   
  32.     public void getArea()  
  33.     {  
  34.   
  35.   
  36.         System.out.println(len*wid);  
  37.     }  
  38.   
  39. }  
  40.   
  41. class ExceptionTest  
  42. {  
  43.         public static void main(String [] args)  
  44.         {  
  45.                 Rec r = new Rec(-3,4);  
  46.                 r.getArea();      
  47.               
  48.             System.out.println("Over");  
  49.   
  50.         }         
  51. }  

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页