一、异常分类
Throwable
是 Java 语言中所有错误或异常的超类。下一层分为 Error
和 Exception
Error
类是指 Java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。
Exception
又有两个分支,一个是运行时异常 RuntimeException
,一个是编译器异常CheckedException
。
二、 异常处理
2.1 抛出
直接使用throws
关键字在方法上抛出。异常使用throws
抛出后,程序不会再向下执行。一个方法是可以同时声明抛出多个异常的,多个异常之间用,
隔开
public void test() throws InterruptedException,ClassNotFoundException {
Thread.sleep(1000);
}
2.2 捕获
使用try/catch/finally
进行捕获。将异常捕获后,代码会继续向下执行。
如果try中的代码没有抛出异常,则不会被捕获,就不会执行catch中的代码。
public void throwsException() {
try {
System.out.println("执行try块中的代码");
System.out.println(1/0);
} catch (ArithmeticException e) {
e.printStackTrace();
System.out.println("执行catch块中的代码");
}finally{
System.out.println("最后执行finally块中的代码");
}
}
三、 Throw 和 throws 的区别
throw
该关键字也用于抛出异常,表示抛出异常的动作。
位置不同 : throws
用在方法声明上,声明要抛出的异常,throw
是用在代码中使用。
作用不同 : throws
只是声明异常,throw
是真正执行的抛出异常的动作。
写法不同 : throws
后跟的是异常类名字,且可以多个,throw
后跟的是异常对象.且只能是一个对象。
throw 后抛出的是一个运行时异常的话,不强制处理,抛出一个非运行时异常,就必须处理。