异常
异常体系结构
- java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所以异常的超类
- 两大类 错误(Error) 异常(Exception)
Exception种类
- ArrayIndexOutOfBoundsException 数组下标越界
- NullPointerException 空指针异常
- ArithmeticException 算术异常
- MissingResourceException 丢失资源
- ClassNotFoundException 找不到类
捕获和抛出异常
关键字:try,catch,finally,throw,throws
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//try监控区域
System.out.println(a/b);
}catch (ArithmeticException e){//捕获异常
System.out.println("程序出现异常,除数不能为零");
}finally {//无论是否有异常都执行,善后
System.out.println("finally");
}
//finally可以不要,但一些情况善后是必要的的
}
}
try里是要执行的代码,catch括号里是要捕获的异常种类
catch可以捕获多种异常,但是更大的异常要放在更下面
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//try监控区域
System.out.println(a/b);
}catch (Error e){//捕获异常
System.out.println("Error");
}catch (Exception e){
System.out.println("Exception");
}catch (Throwable e){
System.out.println("Throwable");
} finally {//无论是否有异常都执行,善后
System.out.println("finally");
}
//finally可以不要,但一些情况善后是必要的的
}
}
- Throwable>Exception>Error
- 快捷键,选定代码,ctrl+alt+t
方法中抛出异常
public class Test {
public static void main(String[] args) {
new Test().test(1,0);
}
public void test(int a,int b) {
if (b==0) {
throw new ArithmeticException();//主动地抛出异常,抛出异常一般在方法里写
}
System.out.println(a/b);
}
}
自定义异常
自定义异常类,只需继承Exception类即可
一般情况下用不到,因为java自带的类可以满足绝大部分需求