文章目录
- 前言
- 1. 什么时异常?
- 2. 异常的分类
- 2.1 运行时异常/非受查异常
- 2.2 编译时异常/受查异常
- 3. 处理异常
- 3.1 抛出异常
- 3.2 声明异常
- 3.3 try catch处理异常
- 总结
✨✨✨学习的道路很枯燥,希望我们能并肩走下来!
编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。
前言
本篇通过认识异常了解一般程序中出现的异常,认识异常的分类,正确的处理异常的方式,例如:抛出异常,捕获异常等。如有错误,请在评论区指正,让我们一起交流,共同进步!
本文开始
1. 什么时异常?
异常:程序执行前没有预料到的情况,程序报出的错误;
之前所见的异常:
空指针异常,算术异常等
2. 异常的分类
异常分为一般分为 运行时异常 和 编译时异常
错误:递归死循环等问题为错误
异常大致分类图:
2.1 运行时异常/非受查异常
运行时异常(RunTimeException):错误不会出现画线部分,程序执行时发生的异常;
例如: 空指针异常,数组越界异常等
public static void main(String[] args) {
int[] arr = null;
System.out.println(arr.length); // 空指针异常
System.out.println(arr[5]); // 数组越界异常
System.out.println(2/0); // 算数异常
}
代码异常报错示范:
2.2 编译时异常/受查异常
编译时异常(Checked Exception):错误部分会出现画线标注,提醒异常,编译时发生的异常;
【注】有编译时异常,必须处理,否则无法编译;
例如:克隆
异常代码示范:
class Student implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
Student student1 = (Student)student.clone();
}
}
编译时异常:
3. 处理异常
异常关键字:throw(抛出时使用),throws(声明异常),try和catch,finally(处理异常时使用)
3.1 抛出异常
抛出异常使用关键字:throw
当满足什么条件下,直接抛出异常;抛出异常指我们知道代码可能发生异常,及时抛出,提醒使用者更改;
3.2 声明异常
异常可以理解为具有传递性,如果不处理异常,仍会报错;
使用关键字:throws声明
声明异常后,是知道有异常,但是如果不处理,还是不能编译;
声明异常只是知道该部分可能存在异常,如果不处理会传递给后面的代码,都只声明不处理,最后会交给JVM处理,产生异常错误;
3.3 try catch处理异常
代码格式:
public static void main(String[] args) {
try {
//可能产生异常的代码
System.out.println(4/0);
} catch (RuntimeException e) { //括号中存放什么异常
//处理异常
e.printStackTrace(); // 打印产生错误的信息 : 红色字体部分如下图
System.out.println("异常的信息");
}
// 写正常的代码
System.out.println("正常的代码");
}
【注】异常处理完成后,正常的代码可以执行,不处理,报异常后的代码都不会执行;
1.catch: 可写多个catch,catch的顺序不影响异常的捕获;
2.多个异常情况下,先执行那个程序(代码),先捕获那个异常;(与catch无关)
finally: try中是否抛出异常,finally中的代码都会执行;
一般用于资源释放;
try {
//可能产生异常的代码
} catch (RuntimeException e) { //括号中存放什么异常
//处理异常
e.printStackTrace();
} finally {
System.out.println("finall一般用于资源释放");
}
System.out.println("正常的代码");
总结
✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!