java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:542) at java.lang.Integer.parseInt(Integer.java:615) at TempTest.process2(TempTest.java:20) at TempTest.process1(TempTest.java:16) at TempTest.main(TempTest.java:9) //IDEA中可以点击括号内容对应找到原码
我们可以看出来,方法的运行顺序是
main调用了process1
process1调用了process2
process2调用了Integer.parseInt(String s)
Integer.parseInt(String s调用了public static int parseInt(String s, int radix)
打印结果如上,说明打印的结果是从最底层向最上层,层层打印出来的
点击第一行括号内容,就可以找到抛出异常的原码位置
1 2 3 4 5 6
public static int parseInt(String s, int radix) throws NumberFormatException { if (s == null) { throw new NumberFormatException("null"); } ... }
java.lang.IllegalArgumentException: java.lang.NullPointerException at TempTest.process1(TempTest.java:19) at TempTest.main(TempTest.java:9) Caused by: java.lang.NullPointerException at TempTest.process2(TempTest.java:24) at TempTest.process1(TempTest.java:17) ... 1 more
catched finally Exception in thread "main" java.lang.RuntimeException: java.lang.NumberFormatException: For input string: "abc" at Main.main(Main.java:8) Caused by: java.lang.NumberFormatException: For input string: "abc" at ...
Exception in thread "main" java.lang.IllegalArgumentException at Main.main(Main.java:11) Suppressed: java.lang.NumberFormatException: For input string: "abc" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.base/java.lang.Integer.parseInt(Integer.java:652) at java.base/java.lang.Integer.parseInt(Integer.java:770) at Main.main(Main.java:6)