Java中运行时异常类解析
Throwable类异常类的父类:
detaiMessage异常类的父类中定义的属性;
getMessage方法用用以返回detailMessage的值;
异常类的无参构造方法和有参构造方法:
运行时异常类的无参构造方法和有参构造方法:
自定义年龄异常类继承自运行时异常类;
package person;
public class AgeException extends RuntimeException {
public AgeException() {
}
public AgeException(String message) {
super(message);
}
}
调用年龄异常类的代码块:
public void setAge(int age) {
if (age>0&&age<120){
this.age = age;
}else {
try {
throw new AgeException("年龄不存在");
}catch (AgeException e){
System.out.println(e.getMessage());
}
}
}
运行结果:
请输入您的年龄:
129
请输入您的性别:
男
年龄不存在
该人物的年龄为:0性别:男
解析:自定义异常类继承了运行时异常类,运行时异常又继承了异常类,而异常类则继承了Throwable类,最终将 throw new AgeException(“年龄不存在”)中的值传给了Throwable类中的getMessage方法,然后子类对象调用getMessage方法,得到一个友好的信息;如果不是try{}catch(){}语句则由虚拟机输出堆栈信息, 通过子类对象调用printStackTrace()方法也可以得到堆栈信息。
这里抛出的是一个空指针异常:
try {
if (c1[i].getId() != 0) {
System.out.println(c1[i].getId() + "\t" + c1[i].getPrice() + "\t\t" + c1[i].getName());
}
} catch (NullPointerException e) {
System.out.print("\t");
}
数组下标越界异常:
try{
i1[i] = 1;
}catch (Exception e){
System.out.println("数组下标越界");
System.out.println("循环结束");
for (int j = 0; j <5 ; j++) {
System.out.println(i1[j]);
}
System.exit(0);
}
在运行时异常类家族中还有几种常用的异常类,它们的结构类似,用法相似,我就不一一列举了。其原理和自定义异常类相似,它们是JavaSE中定义的功能更加强大,自定义异常类需要主动抛出。
分享结束