IDEA中的异常
//java.lang.ArrayIndexOutOfBoundsException(数组的下标越界异常)
//java.lang.StringIndexOutOfBoundsException(字符串的下标越界)
//java.lang.IndexOutOfBoundsException(下标越界的异常)
//java.lang.NullPointerException(空指针异常)
//java.lang.ClassCastException(类型转换异常)//java.lang.NumberFormatException(数字的格式转换异常)
//手动的产生异常
throw new RuntimeException("程序因为异常而被终止....");一、异常的基本概念(Java 层面)
Java 中的异常分为两类:
二、IDEA 中处理异常的实用功能
1. 自动提示异常处理
当代码中存在未处理的受检异常时,IDEA 会在代码下方标红,并在左侧显示错误图标。
2. 快速生成 try-catch 块
3. 异常调试(Debug)
IDEA 的调试功能可高效定位异常:
4. 异常信息提示
运行程序时若抛出异常,IDEA 会在 Run 或 Debug 窗口显示异常堆栈信息:
5. 自动补全异常相关代码
- 受检异常(Checked Exception):编译期必须处理(捕获或声明抛出),如
IOException、SQLException。 - 非受检异常(Unchecked Exception):继承自
RuntimeException,编译期不强制处理,如NullPointerException、IndexOutOfBoundsException。
- 鼠标悬停在错误处,会提示 “Unhandled exception: XXX”。
- 按
Alt + Enter(Windows/Linux)或Option + Enter(Mac),IDEA 会提供处理建议:- Surround with try/catch:自动生成
try-catch块捕获异常。 - Add throws declaration:在方法签名上添加
throws声明,将异常抛给上层处理。
- Surround with try/catch:自动生成
- 选中需要捕获异常的代码段,按
Ctrl + Alt + T(Windows/Linux)或Cmd + Alt + T(Mac),在弹出的菜单中选择try/catch,IDEA 会自动包裹并生成对应异常的捕获块。 - 生成的
catch块默认捕获具体异常,也可选择捕获父类异常(如Exception),但不推荐(可能掩盖具体错误)。
- 断点调试:在可能抛出异常的代码行设置断点(单击行号左侧),启动调试(
Shift + F9),执行到断点时可查看变量状态。 - 异常断点:通过
Run -> View Breakpoints(或Ctrl + Shift + F8)打开断点窗口,点击+选择Java Exception Breakpoints,输入异常类名(如NullPointerException),调试时一旦抛出该异常会自动暂停,便于追踪根源。
- 堆栈信息中加粗的行是异常发生的具体位置,点击可直接跳转到对应代码。
- 鼠标悬停在异常类名上,会显示该异常的说明文档(需配置 JDK 文档)。
- 输入
try后按Tab或回车,IDEA 会自动生成try-catch或try-with-resources(Java 7+,用于自动关闭资源,如流)的模板。 6. 检查异常处理的合理性
IDEA 的代码检查功能(
Code -> Inspect Code)会提示异常处理的潜在问题:- 例如:捕获异常后未做任何处理(仅
e.printStackTrace()可能被忽略)、不必要的异常捕获(捕获了不会抛出的异常)等。 三、常见问题与技巧
- 忽略特定异常的检查:若确认某些受检异常无需处理(不推荐),可在方法上声明
throws Exception,但可能降低代码可读性。 - 自定义异常模板:通过
File -> Settings -> Editor -> Live Templates可自定义异常相关的代码模板,提高编码效率。 - 异常链追踪:当异常被包装(如
throw new RuntimeException(e)),IDEA 的堆栈信息会显示完整的异常链,帮助定位原始错误。
- 受检异常(Checked Exception):编译期必须处理(捕获或声明抛出),如
