如何识别java.lang.NumberFormatException,替换null用于catch块if判断
问题分析与代码修正
核心问题说明
- catch块中的异常实例永远非null:只要程序进入
catch(NumberFormatException e)代码块,JVM必然会传入一个有效的异常对象,所以你写的if(e != null)和else if(e == null)完全是多余的判断,没有任何实际意义。 - 正常执行逻辑的位置错误:代码正常运行(未抛出异常)的逻辑,不应该放在catch块的分支里,而是要放在
try块之后、catch块之外的位置。
修正后的代码
String o = ""; try { // 这里写处理o的业务逻辑,比如尝试将字符串转为数字 Integer.parseInt(o); } catch(java.lang.NumberFormatException e) { // 进入此块说明确实触发了数字格式异常,直接输出错误信息 System.out.println("Incorrect input at: " + o); } // 正常执行的逻辑放在这里,仅当try块无异常时才会执行 System.out.println("Working fine!");
修正后逻辑说明
- 如果try块中的代码抛出
NumberFormatException,程序会进入catch块,输出错误提示。 - 如果try块中的代码正常执行(没有抛出异常),程序会跳过catch块,直接执行后续的正常逻辑输出。
内容的提问来源于stack exchange,提问作者Eagle32349
相关产品推荐
相关产品推荐

