目录
问题:
刷面经,博客记录输出,加深印象 2025.3.2 希望毕业前可以找到工作。
作用:
可以通过是哪些异常来判断是自己代码的逻辑错误还是外部环境错误。
方法:
1.是否可以通过程序逻辑去避免错误
- 一般情况下,运行时异常可以通过代码的逻辑去避免,比如空指针异常等等。
- 非运行时异常,大多数由外部因素引起,即使修改代码的逻辑也避免不了,比如文件找不到等等。
2.通过场景
- 程序逻辑错误,比如程序忘了判断了 空指针,索引越界等等
- 示例:
- 访问空对象的成员 →
NullPointerException
。 - 数组索引超出范围 →
ArrayIndexOutOfBoundsException
。 - 将字符串转换为数字失败 →
NumberFormatException
。
- 访问空对象的成员 →
- 如文件不存在、网络中断、数据库连接失败等
- 示例:
- 类加载失败 →
ClassNotFoundException
。 - 数据库查询失败 →
SQLException
。 - 文件不存在 →
FileNotFoundException
。
- 类加载失败 →
3.通过继承关系
- Error和Exception都继承了Throwable
- 如果继承了RuntimeException就是运行时异常,没有则非运行时异常。
4.通过类名
- 运行时异常
- 越界、非法、空指针等词汇
- 非运行时异常
- 找不到、失败、中断等词汇。
常见的非运行时异常:
异常名称 | 描述 |
---|---|
| 尝试打开一个不存在的文件时抛出。 |
| 输入/输出操作失败时抛出,例如读取文件、写入文件等。 |
| 数据库操作失败时抛出,例如 SQL 查询语法错误或连接问题。 |
| 尝试通过反射加载类时,找不到指定的类时抛出。 |
| 线程被中断时抛出,通常用于多线程编程中。 |
| 尝试访问类中不存在的字段时抛出。 |
| 尝试调用类中不存在的方法时抛出。 |
| 解析字符串为日期或其他格式时发生错误时抛出(如使用 |
常见的运行时异常:
异常名称 | 描述 |
---|---|
| 尝试访问空对象的成员(方法或属性)时抛出。 |
| 访问数组时索引超出范围时抛出。 |
| 数学运算错误时抛出,例如除以零。 |
| 强制类型转换失败时抛出。 |
| 方法接收到非法参数时抛出。 |
| 对象的状态不适合当前操作时抛出。 |
| 访问集合(如 |
| 将字符串转换为数字失败时抛出(如使用 |
| 调用不支持的操作时抛出,例如对不可修改的集合调用修改方法。 |