自定义异常一般要继承Exception和RuntimeException 以及它们的子类,通过自定义异常更能细化异常的问题,帮助jvm和程序员更好的理解和分析代码
创建自定义异常类
public class IllegleAgeException extends RuntimeException {
//自定义异常类继承自运行时类(RuntimeException)
//重写自定义类的构造方法
//因为在继承时只有构造方法不会被直接继承
public IllegleAgeException() {
super();
}
public IllegleAgeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public IllegleAgeException(String message, Throwable cause) {
super(message, cause);
}
public IllegleAgeException(String message) {
super(message);
}
public IllegleAgeException(Throwable cause) {
super(cause);
}
}
创建一个Person类
public class Person {
private String name;
private int age;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age >= 0 && age <= 250) {
this.age = age;
}else {
//抛出自定义异常类
throw new IllegleAgeException("输入错误!年龄应大于0,小于250");
}
}
}
测试类
public class Test {
public static void main(String[] args) {
try {
Person p = new Person();
p.setName("赵柳");
p.setAge(-987654);
System.out.println(p);
//该异常未出现,不执行
}catch(ArithmeticException ae){
System.out.println("我难道没有重见天日的机会了???");
//捕获到自定义异常,抛出自定义异常类
}catch (IllegleAgeException e) {
System.out.println("与你偶遇一场……见了一个异常!");
}
}
}