异常处理
class Student {
public int age;
public Student(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}
eclipse 可以自动生成get方法。
异常包括
错误原因。
异常链:单链表。
异常类的根类:Throwable
Throwable
两个子类 error exception
error不处理因为出错后程序无法正常执行
但是exception需要进行处理。
基本异常
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 数组越界异常
StringIndexOutOfBoundsException 字符串越界异常
ArithmeticException 计算异常(int除0)
类异常
ClassCastException 类型转换异常
运行异常
RuntimeException
检查异常
CheckException//不能通过编程消除。
class Fruit{
}
class Apple extends Fruit{
}
//苹果的引用变量可以给水果类型的变量赋值。小类型可以给大类型赋值但是大类型没办法给小类型赋值。
public class main{
public static void main(string[] arg){
Fruit f;
Apple a;
f=a;//提升
if(f instanceof Apple)//只有Apple继承了f时才能用instanceof否则报错。
a=(Apple) f;//降低
}
}
//f instanceof Apple 一个引用变量是否指向一个变量类型 (f指向的东西是否是Apple)
getMesseger()
获得异常信息
getCause()
获得异常链
e.prinfStackTrace();//打印异常信息。
解决所有异常:
try{}
catch{}
finally{
//这里写代码
}
异常抛出:
public static void a() throws Exception{
}
class A{
void a(){
try{
}
catch(java.io.IOException){
}
}
}
自定义异常类:
public class MyException extends Exception{
int pains;
Public MyException(string Messege, Exception c), int pain{
super(messege,c);
this.pains=pain;
}
}
void a() throws AException{
try{
}catch(Exception e){
throws new AException(e);
}
}
覆盖函数不能抛出被覆盖函数没有声明的异常
覆盖函数的访问权限不能比被覆盖的访问权限低