Java 在catch子句中,一个Expection实例被记录下来,而我并没有创建任何一个

Java 在catch子句中,一个Expection实例被记录下来,而我并没有创建任何一个,java,exception,exception-handling,Java,Exception,Exception Handling,如果对于上述代码段,如果发生NumberFormatException,它将立即转到NumberFormatException的捕获原因。但是我没有创建任何NumberFormatException的实例,然后它在哪里被创建。 是不是像- 一旦出现任何异常,JVM会在内部检查异常类型,并在内部创建该特定异常类型的一个实例,一旦它在catch层次结构中注册或找到任何匹配类型,它转到该循环在Integer的parseInt方法中创建NumberFormatException对象。(没有Integer

如果对于上述代码段,如果发生NumberFormatException,它将立即转到NumberFormatException的捕获原因。但是我没有创建任何NumberFormatException的实例,然后它在哪里被创建。 是不是像-
一旦出现任何异常,JVM会在内部检查异常类型,并在内部创建该特定异常类型的一个实例,一旦它在catch层次结构中注册或找到任何匹配类型,它转到该循环

Integer
parseInt
方法中创建NumberFormatException对象。(没有
Integer.parse(String)
方法。)

当抛出异常时,JVM使用中描述的一组特定规则来选择要执行的匹配的
catch
子句。主要规则是:

如果V的运行时类型与try语句的任何catch子句的可捕获异常类(§5.2)赋值兼容,则选择第一个(最左侧)此类catch子句


NumberFormatException对象正在
Integer
parseInt
方法中创建。(没有
Integer.parse(String)
方法。)

当抛出异常时,JVM使用中描述的一组特定规则来选择要执行的匹配的
catch
子句。主要规则是:

如果V的运行时类型与try语句的任何catch子句的可捕获异常类(§5.2)赋值兼容,则选择第一个(最左侧)此类catch子句


,JVM创建异常的实例。。您回答了自己的问题…

,JVM创建异常实例。。您回答了自己的问题…

方法
parse()
创建异常实例,并在认为出现问题时抛出它。捕获时,您(几乎总是)捕获创建并抛出的
parse()
方法所创建的实例。

方法
parse()
创建异常实例,并在认为出现问题时抛出它。当您捕获它时,您(几乎总是)捕获创建并抛出的
parse()方法的实例

但我没有创建任何NumberFormatException的实例

如果无法将字符串解析为int,则该方法将抛出NumberFormatException。这是

一旦出现任何异常,JVM会在内部检查异常类型,并在内部创建该特定异常类型的一个实例,一旦它在catch层次结构中注册或找到任何匹配的类型,它就会进入该循环

或多或少

不过,这并没有深入到JVM内部。Integer#parseInt是用Java实现的,就像您自己的程序一样。如果你感兴趣,你可以看看

但我没有创建任何NumberFormatException的实例

如果无法将字符串解析为int,则该方法将抛出NumberFormatException。这是

一旦出现任何异常,JVM会在内部检查异常类型,并在内部创建该特定异常类型的一个实例,一旦它在catch层次结构中注册或找到任何匹配的类型,它就会进入该循环

或多或少


不过,这并没有深入到JVM内部。Integer#parseInt是用Java实现的,就像您自己的程序一样。如果您感兴趣,可以查看。

到目前为止,所有人都没有解释的是
Integer.parseInt()的代码中有这样一条语句:

 Integer.parseInt("Abhishek");

这就是创建和抛出异常的点。您可以查找源代码并找到该语句。

到目前为止,所有人都没有解释的是,
Integer.parseInt()
的代码中有以下语句:

 Integer.parseInt("Abhishek");
这就是创建和抛出异常的点。您可以查找源代码并找到该语句

throw new NumberFormatException(...)