多捕获中的 WebApplicationException 和 NotFoundException

WebApplicationException and NotFoundException in multi-catch

所以我的问题是:

基本上我有一个带有 try-catch 块的方法,我在其中捕获 WebApplicationException (javax.ws.rs.WebApplicationException) 但我的方法抛出 NotFoundException (com.sun.jersey.api.NotFoundException)。

所以我想这样处理:

try {


} catch (WebApplicationException e | NotFoundException e) {


}

但是我得到以下编译时错误:

The exception NotFoundException is already caught by the alternative WebApplicationException

但这是为什么呢? NotFoundException 应该来自一个完全不同的包(球衣),不是吗?

此外 - 如果我将它们放在单独的 catch() 块中,效果很好。

请帮忙。

你的语法错误。参见 Java Doc。改为这样做:

try {


} catch (WebApplicationException | NotFoundException e) {


}

您可以先尝试子异常。

try {

} catch (NotFoundException e) {
} catch (WebApplicationException e) {
}

But why is that? NotFoundException is supposed to come from a totally different package (jersey)

如果你通过 jersey's NotFoundException source code 比你找到的 NotFoundException extends WebApplicationException。这里,NotFoundException继承了javax.ws.rs.WebApplicationExceptionclass。所以,WebApplicationExceptioncom.sun.jersey.api.NotFoundException 的父级 class,这就是你得到错误的原因。

package com.sun.jersey.api;

import java.net.URI;
import javax.ws.rs.WebApplicationException;

/**
 * A HTTP 404 (Not Found) exception.
 * 
 * @author Paul.Sandoz@Sun.Com
 */
public class NotFoundException extends WebApplicationException