为什么在这段代码中没有捕捉到NumberFormatException异常?
- 论坛
- 为什么在这段代码中没有捕捉到NumberFormatException异常?
10 浏览
匿名的
0 Comments
NumberFormatException没有在这段代码中被捕获的原因是,使用了finally块,无论是否有未处理的异常,都会执行该块中的代码。根据Oracle文档的说明,finally块总是在try块退出时执行。
因此,即使抛出了一个运行时异常(NumberFormatException),finally块也会被执行。因此,temp函数的返回值不是异常,而是-1。
下面是代码的执行过程:
- 打印A
- parseInt抛出异常
- 执行finally块
- 打印D,并返回-1
- 打印-1
- 由于堆栈帧中没有异常,打印F
问题的解决方法是在try块中添加catch块来捕获NumberFormatException异常。这样,即使抛出异常,也能够在catch块中处理它。
希望这能帮助你理解。