异常

异常的顶层父类是Throwable

Throwable

  - Error

  - Exception

    - 编译时异常Exception

      - 必须声明或者捕获

    - 运行时异常RuntimeException

      - 可以声明不捕获,也可以进行捕获处理.

异常的处理:

  自定义异常类:由我们自己书写一个异常类,继承Exception或者RuntimeException.在这个异常类中,我们只需要提供构造函数即可,里面可以写一些处理.

  看个例子吧.

    需求:使用自定义异常类,判断输入的person的年龄是否合法:age(0,120]

 1 public class IllegalAgeException extends RuntimeException{
 2     public IllegalAgeException(String message){  //如果有异常的话,就执行带有message信息的这个构造函数,否则的话,使用无参的.  在person的构造函数中体现
 3         super(message);
 4     }
 5     public IllegalAgeException(){
 6         super();
 7     }
 8 }
 9 
10 class Person extends IllegalAgeException{
11     private int age;
12 
13     public int getAge() {
14         return age;
15     }
16 
17     public void setAge(int age) {
18         this.age = age;
19     }
20 
21     public Person(int age) {  //在person的构造函数中判断年龄是否合法.不合法的话,直接抛给自定义异常类进行处理
22         //对输入的名字进行判断
23         if(age >= 120 || age <= 0)
24             throw new IllegalAgeException("请输入合法的年龄");
25         this.age = age;
26     } 
28 }
29 
30 public class ThrowableDemo {
31 
32     public static void main(String[] args) {
33         //创建一个person类的对象
34         Person p = new Person(-12);
35         System.out.println(p.getAge());
37     }
39 }

 

 

 

  声明和捕获:

    - 声明 :throws

    - 捕获 :try-catch-finally

 

继承中的函数复写异常细节:

  - 子类复写父类的函数,要求函数的返回值类型,函数名,参数列表必须一致。

  - 子类复写父类的函数,子类中函数访问权限大于等于父类中函数的访问权限。

  - 不能修改访问方式

  - 子类复写父类的函数时,如果父类的函数上没有声明异常,子类复写的时候,也不能声明异常(重点,开发中会经常犯错误)只能使用try-catch代码块进行捕获处理。

 

posted @ 2017-03-16 18:47  leevanes  阅读(238)  评论(0编辑  收藏  举报