2

所以我的问题是:

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

所以我想像这样处理两者:

try {


} catch (WebApplicationException e | NotFoundException e) {


}

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

异常 NotFoundException 已被替代 WebApplicationException 捕获

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

另外 - 如果我将它们放在单独的 catch() 块中,它工作正常。

请帮忙。

4

2 回答 2

0

你的合成器是错误的。请参阅Java 文档。改为这样做:

try {


} catch (WebApplicationException | NotFoundException e) {


}
于 2018-02-22T11:04:40.390 回答
0

您可以先尝试子异常。

try {

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

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

如果您仔细阅读jersey's NotFoundException 源代码而不是找到,NotFoundException extends WebApplicationException. 在这里,NotFoundException继承javax.ws.rs.WebApplicationException类。所以,WebApplicationException是 的父类com.sun.jersey.api.NotFoundException,这就是你得到错误的原因。

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 
于 2018-02-22T11:06:18.997 回答