- 异常类的结构
Throwable 类下有两个子类为Error和Exception;Exception的子类为IOException和RuntimeException - 异常分类
- 非受查异常:所有Error以及RuntimeException直接子类,不强制进行异常处理
- 受查异常: 所有其他异常,必须强制用户进行异常处理
- 各异常简介:
- Error类描述java运行时内部错误或资源耗尽错误(OOM、StackOverFlowError)
- RuntimeException:程序出错(ClassCast、NullPointer、NumberFormat、ArrayIndexOutOfBound、)
- IOException:程序本身没有问题,I/O异常(打开一个不存在的文件)
异常捕获的基本格式:
try{
//可能出现异常的代码
}[catch.....]{
e.printStackTrace();
//出现异常后的处理
}[finally]{
//异常出口
}
try - catch (可以有多个catch)
try - finally
try - catch(可以有多个catch)- finally
finally 代码块无论如何都会执行
若try 或 catch 块中有return 语句,则在return语句执行之前一定会执行finally代码块
- 异常的两个关键字:
- throws:用在方法声明上,明确告诉调用者本方法可能产生的异常,但方法本身不处理,将异常抛回给调用方
- throw :用在方法体代码中,表示人为进行异常抛出如果希望自己产生异常类而非有jvm产生,就可以在代码块中使用throw来抛出异常(一般与分支语句搭配使用来抛出自定义异常)
- 自定义异常: 用户可以继承Exception或RuntimeException来实现自定义异常