异常机制
异常处理 (Exception Handling) 就是一种解决这一问题的机制,能够较好地处理程序不能正常运行的情况
百度百科
在 Java 语言中,在程序执行中发生的不正常情况称为异常
Error(错误):Java 虚拟机无法解决的严重问题,我们编写的代码无法解决这类问题
Exception(异常):其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。
# 继承体系
如果程序出现了问题,我们没有做任何处理,最终 JVM 会做默认的处理,处理方式有如下两个步骤:
把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
程序停止执行
# 异常处理
运行时异常,因为该类异常只有在运行时期才会产生的异常所以一般不需要显式处理,发生在编译时期的异常我们必须进行显式处理
# 处理方式
直接将异常抛出
- Throw: 只能在方法体内部使用,一般用来抛出一个异常对象
- Throws:在方法声明部分使用,一般是用来将方法内部的异常抛到该方法的上一级
public void show throws MyException(){
}
1
2
3
2
3
捕获处理
Try{
可能产生异常的代码
}catch(异常类型 e){
当产生异常之后进行处理的代码
}finally{
无论是否产生异常都会执行的代码
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 自定义异常
定义并编写异常类
package com.coder163.exceptions;
public class MyException extends Exception{
public MyException() {
}
public MyException(String message) {
super(message);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
异常处理
package com.coder163.exceptions;
public class Application {
public static void throwException() throws MyException {
throw new MyException("自定义异常");
}
public static void main(String[] args) {
try {
throwException();
} catch (Exception e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 练习
编写一个类 TestException,在 main 方法中使用 try、catch、finally,要求:
在 try 块中,编写被零除的代码
在 catch 块中,捕获被零除所产生的异常,并且打印异常信息
在 finally 块中,打印一条语句。
编写应用程序 EcmDef.java,接收命令行的两个参数,要求不能输入负数,计算两数相除。
对数据类型不一致 (NumberFormatException)
除 0(ArithmeticException) 进行异常处理