文章目录
- 一、异常种类
-
- 受查异常
- 非受查异常
- 常见的异常类
- 二、防御式编程
- 三、异常基本用法
- 四、异常处理流程
- throw 和 throws 区别
- final、finally、finalize 区别
- try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
一、异常种类 受查异常
- 编译时异常,必须处理完异常以后,才可以运行;
- Java的标准包 java.lang java.util 和 java.net 中定义的异常都是非运行异常。
- 运行时异常;
- 程序中除数为0引起的错误、数组下标越界错误、错误的强制类型转换错误、使用了空对象NullPointerException等,它们虽然是由程序本身引起的异常,但不是程序主动抛出的,而是在程序运行中产生的。
文章图片
- 算术异常类:ArithmeticExecption
- 空指针异常类:NullPointerException
- 类型强制转换异常:ClassCastException
- 数组负下标异常:NegativeArrayException
- 数组下标越界异常:ArrayIndexOutOfBoundsException
- 文件未找到异常:FileNotFoundException
- 字符串转换为数字异常:NumberFormatException
- 操作数据库异常:SQLException
- 输入输出异常:IOException
- 方法未找到异常:NoSuchMethodException
- LBYL: look brfore your leap. 在操作之前就做好充分的准备;
- EAFP: it’s easier to ask forgiveness than permission. 先操作,遇到问题在处理
try {
有可能出现异常的语句;
} catch(异常类型 异常对象) {
出现异常后的行为;
}
finally {
异常的出口
}
- 一段代码中可能会抛出不同种的异常,不同异常会有不同的处理方式,所以可以搭配多个 catch 代码块,但是只有一个可以被执行; 也可以使用 catch (NullPointerException | ArithmeticExecption e) {} ;
- finally 可以不使用直接使用 try 回收资源;
- 如果方法中没有合适的异常处理方式,就会沿着调用栈向上传递;
throw 和 throws 区别 throw是语句抛出一个异常; throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
final、finally、finalize 区别
- 【JavaSE|异常学习笔记】final 用于修饰变量、方法和类。
- final 变量:被修饰的变量不可变,不可变分为引用不可变和对象不可变,final 指的是引用不可变,final 修饰的变量必须初始化,通常称被修饰的变量为常量。
- final 方法:被修饰的方法不允许任何子类重写,子类可以使用该方法。
- final 类:被修饰的类不能被继承,所有方法不能被重写。
- finally 作为异常处理的一部分,它只能在 try/catch 语句中,并且附带一个语句块表示这段语句最终一定被执行(无论是否抛出异常),经常被用在需要释放资源的情况下,System.exit (0) 可以阻断 finally 执行。
- finalize 是在 java.lang.Object 里定义的方法,也就是说每一个对象都有这么个方法,这个方法在 gc 启动,该对象被回收的时候被调用。
一个对象的 finalize 方法只会被调用一次,finalize 被调用不一定会立即回收该对象,所以有可能调用 finalize 后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会再次调用 finalize 了,进而产生问题,因此不推荐使用 finalize 方法。
- 任何执行 try 或者 catch 中的 return 语句之前,都会先执行 finally 语句,如果 finally 存在的话。如果 finally 中有 return 语句,那么程序就 return 了,所以 finally 中的 return 是一定会被 return 的。
推荐阅读
- PROG10082 面向对象
- Java|工作11年被公司辞退,中年危机怎么自救()
- JAVA人生|35岁程序员被裁后找了6份兼职,晒出收入
- java人生|985 毕业的那个大龄码农被裁了
- Java|太卷了~ 八股文,算法张口就来(2022版Java面试手册帮你全拿捏)
- java|JVM虚拟机
- Java面试题及答案整理|Java面试题及答案整理(2022最新版)
- java|java基础面试题(2022)
- Java|女程序员谈谈在阿里工作的真实感受...