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