java异常
异常的体系结构
在java程序中错误是无法被处理的
捕获异常
public class A {
public static void main(String[] args) {
try {
int[] arr = new int[2];
arr[2] = 3;//此出会发出下标越界异常
//下标越界异常ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
//可以获取异常的信息
System.out.println(e.getLocalizedMessage());
//可以捕获多种异常
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
} finally {
System.out.println("这个只要发生异常都会执行");
}
System.out.println("11111");
}
}
抛出异常
class B {
//throws关键字表示此方法会抛出异常,如果抛出的是Exception异常或者自定义异常继承Exception异常必须在方法上添加throws关键字
public void s() throws Exception {
//throw关键字表示会抛出异常
throw new Exception("测试");
}
public void a() {
throw new NullPointerException();
}
}
public class A {
public static void main(String[] args) {
}
}
自定义异常
//可以自定义异常只要在异常继承链上就行了
class MyEx extends NullPointerException {
@Override
public String getLocalizedMessage() {
return super.getLocalizedMessage();
}
}
public class A {
public static void main(String[] args) {
try {
throw new MyEx();
} catch (MyEx e) {
//捕获异常还能继续抛出
throw new RuntimeException();
}
}
}