Java编写ArithmeticException捕获逻辑后仍触发异常问题求助
问题产生原因
你观察到的报错并非程序本身存在未捕获异常,而是IDE调试模式的触发提示,具体原因如下:
- 你当前以Debug调试模式启动程序,且IDE开启了异常触发断点配置:只要
ArithmeticException被抛出,无论后续是否有对应catch块捕获,IDE都会主动暂停主线程,输出你看到的Thread [main] (Suspended (exception ArithmeticException))提示,和代码逻辑无关。 - 报错中的
out of synch提示是调试器和字节码不同步导致的,一般是修改代码后未重新编译就启动调试产生的。 - 你编写的代码本身异常处理逻辑完全正确,普通运行模式下不会出现未捕获的
ArithmeticException。
解决方法
- 若只需正常运行业务逻辑:选择IDE的普通运行模式(Run而非Debug)启动程序即可,输入
3 0后会正常输出预期结果:Exception: an integer cannot be divided by zero Execution continues ... - 若需要继续使用调试模式:
- 清理项目历史编译产物,重新全量编译代码,解决字节码不同步问题
- 打开IDE的断点配置面板,删除针对
ArithmeticException的异常断点,或取消「捕获的异常也触发断点」的勾选即可,后续调试时抛出该异常就不会自动暂停线程。
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

