目录
异常
异常的概述
异常就是程序出现了不正常的情况
异常的体系结构
JVM默认处理异常的方式(理解)
- 如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:
- 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
- 程序停止执行
try-catch方式处理异常(应用)
try {
可能出现异常的代码;
} catch(异常类名 变量名) {
异常的处理代码;
}
执行流程 :
- 程序从 try 里面的代码开始执行
- 出现异常,就会跳转到对应的 catch 里面去执行
- 执行完毕之后,程序还可以继续往下执行
Throwable成员方法(应用)
编译时异常和运行时异常的区别(记忆)
编译时异常:
- 都是Exception类及其子类
- 必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常:
- 都是RuntimeException类及其子类
- 无需显示处理,也可以和编译时异常一样处理
throws方式处理异常(应用)
定义格式:
public void 方法() throws 异常类名 {
}
注意事项:
- 这个throws格式是跟在方法的括号后面的
- 编译时异常必须要进行处理,两种处理方案:try...catch …或者 throws,如果采用 throws 这种方案, 将来谁调用谁处理
- 运行时异常可以不处理,出现问题后,需要我们回来修改代码
throws和throw的区别(记忆)
自定义异常(应用)
自定义异常类
/**
* 自定义异常类
*/
public class ScoreException extends Exception{
public ScoreException() {
}
public ScoreException(String message) {
super(message);
}
}
老师类
public class Teacher {
public void checkScore(int score) throws ScoreException {
if (score < 0 || score > 100) {
throw new ScoreException("你给的分数有误,分数应该在0-100之间");
}else {
System.out.println("成绩正常");
}
}
}
测试类:
import java.util.Scanner;
/**
* 测试类
*/
public class ExceptionTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sc.nextInt();
Teacher t = new Teacher();
try {
t.checkScore(score);
} catch (ScoreException e) {
e.printStackTrace();
}
}
}