异常
- throws IOException
1. 异常体系
1. 异常体系:
- Throwable:
- Error: 严重问题,不需要处理
- Exception:
- RuntimeException: (称为运行时异常,其他均为编译时异常) 在编译期是不检查的,出现问题后,需要我们回来改代码
- 非RuntimeException: 编译期就必须处理的,否则程序不能通过编译,更不能正常运行
2. JVM的默认处理方案
- 如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理:
- 把异常的名称,异常原因和异常出现的位置等信息输出在了控制台。
- 程序终止执行。
3. 异常处理
- 在JVM的默认处理方案上,不会终止程序,而会继续执行
1. 格式:
try{
可能出现异常的代码;
} catch {
异常的处理代码;
}
2. 例如:
try{
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace(); // 返回最全面的异常信息 (最常用)
}
4.两种异常
- 编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译
- 运行时异常:无需显示处理,也可以和编译时异常一样处理
5. 处理异常2 (throws 异常类名):
- throw抛出异常没有处理,不往下执行,try catch往下执行
异常处理之throws:
- 编译时异常必须要进行处理,两种处理方案:try…catch… 或者 throws。(如果throws来处理,将来谁调用谁处理)
- 运行时异常可以不处理,出现问题后,需要我们回来改代码
6. 自定义异常
1. 格式:
public class 异常类名 extends Exception {
无参构造
带参构造
}
2. 范例
public class ScoreException extends Exception{
public ScoreException () {}
public ScoreException (String message) {
super(message);
}
}
7. throw 和 throws 的区别
1. throws:
- 用在方法名后面,跟的是异常类名
- 表示抛出异常,由该方法的调用者来处理
- 表示可以出现异常(不一定出现异常)
2. throw:
- 用在方法体内,跟的是异常对象名
- 表示抛出异常,由方法体内的语句处理
- 一定出现了某种异常