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