try-catch-finally
- 快捷键:
ctrl+alt+t
选6
throws 异常
- throws 抛出异常让调用该方法的用户去处理该异常
- throws 后面可以更多个异常,使用
,
连接1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Exception01 {
public static void main(String[] args) {
Demo d = new Demo();
try {
// 抛出的编译异常必须处理
d.say();
} catch (Exception e) {
throw new RuntimeException(e);
}
// 抛出的运行时异常不必显示处理,方法后面默认有一个throws
d.talk();
}
}
class Demo {
// 或者 throws Exception
// 这是抛出的编译时异常
public void say() throws FileNotFoundException {
FileInputStream file = new FileInputStream("D:\\test.txt");
}
// 抛出的运行时异常
public void talk() throws ClassFormatError {
}
} - 细节
- 对于编译异常必须处理,例如try-catch 或者 throws
- 对于运行时异常,程序中没有处理的,默认使用throws的方式处理
- 子类重写父类方法时,子类抛出的异常类型要么和父类抛出的一样,要么是父类抛出异常的子类
1
2
3
4
5
6
7
8
9
10
11
12class Father{
public void method() throws RuntimeException{
}
}
class Son extends Father{
public void method() throws ArithmeticException {
super.method();
}
} - 如果有try-catch处理的情况下就不用使用throws
- 对于throws抛出的运行时异常并不需要显示处理,编译不会报错
自定义异常
- 继承类分析
- 继承 Exception 实现的是编辑异常
- 继承 RuntimeException 实现的是运行时异常
1 | public class CustomException { |