Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果调用位于try/catch块中,并且该方法也抛出异常,那么catch是否具有优先级?_Java_Exception - Fatal编程技术网

Java 如果调用位于try/catch块中,并且该方法也抛出异常,那么catch是否具有优先级?

Java 如果调用位于try/catch块中,并且该方法也抛出异常,那么catch是否具有优先级?,java,exception,Java,Exception,如果该方法被声明为抛出与某些代码抛出的异常相同的异常,并且该代码也包含在try/catch中,那么catch会捕获该异常还是仍然抛出该错误?我猜测catch具有优先级,尽管我不是100%确定。每个catch块都是一个异常处理程序,它处理由其参数指示的异常类型。处理完异常后,将不再抛出异常,除非您在catch块中重新抛出异常。如果我理解正确,您会问: void someMethod() throws SomeException { try { doSomethingElse()

如果该方法被声明为抛出与某些代码抛出的异常相同的异常,并且该代码也包含在try/catch中,那么catch会捕获该异常还是仍然抛出该错误?我猜测catch具有优先级,尽管我不是100%确定。

每个catch块都是一个异常处理程序,它处理由其参数指示的异常类型。处理完异常后,将不再抛出异常,除非您在catch块中重新抛出异常。

如果我理解正确,您会问:

void someMethod() throws SomeException {    
  try {
    doSomethingElse()
  } catch (SomeException e) {
    // is this reached or does it throw from the method?
  }
}
将触发catch子句,并将异常视为已处理。除非您从该块中重新抛出它,否则它将无法逃脱该方法


在我的示例中,您的方法不需要声明它抛出了一些异常,因为它没有。这不是一个构造“优先于”另一个构造的问题。他们在说不同的话

(借用邓肯的例子…)

另外,我将假定
SomeException
是一个选中的异常

这一行在这里:

void someMethod() throws SomeException {

意思是说,
someMethod
>>可以>可以>可以>不只是写一个示例程序然后自己尝试。如果你写了一个测试并编辑了你的文章以包含结果,那么这对其他读者会很有用,所以请提供一些代码和你的问题-现在,不清楚你的意思。不确定我是否理解正确,但是-如果方法包含
try{…}catch(MyException ex){/*吞下异常*/},则使用
throws MyException
标记方法将永远不会抛出
MyException
inside-如果你想让其他人也获得异常,你需要在捕获后重新播放。
void someMethod() throws SomeException {