定义异常 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一定要处理。