定义异常 AgeException

package day08.myexception;/*** 自定义异常*/public class AgeException extends Exception{public AgeException(){}public AgeException(String s){super(s);}}

在person类中(name,age),setAge方法,如果不符合年龄的条件,抛出自定义的AgeException

package day08.myexception;public class Person {private String name;private int age;public Person() {super();}public Person(String name, int age) throws AgeException{super();this.setName(name);this.setAge(age);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) throws AgeException{if(age>120 || age<0){throw new AgeException("年龄条件不符合");}else{this.age = age;}}public static void main(String[] args) {try {Person p = new Person("zhangfei",30);System.out.println(p.getName());} catch (AgeException e) {e.printStackTrace();}}}

throws:并没有真正的处理异常,只是骗过编译器。

1) 逐层的上抛异常,直到main方法。如果main中仍没有处理,程序会被异常中断。

2) throws中断了本层的代码。

3) throws运行时异常没有意义

 

要想积极的处理异常,用try-catch-finally:

try{// 出现1

// 可能出现异常的代码

}catch(异常对象){// 出现0-N次 多次的时候小的写上面,大的写下面,异常时从上到下逐步的捕获的。

// 捕获到对应异常对象之后所做的处理。

}finally{// 出现0-1次,没有catchfinally一定要有。

// 一定会执行的代码

}

 

一般都是try-catch-finally处理掉。方法中可以不处理,用throws上抛,最终抛到了mainmain方法中禁止用throws上抛异常。意味着main一定要处理。