所以我的问题是:
基本上我是一个带有try-catch块的方法,我抓住了一个WebApplicationException(javax.ws.rs.WebApplicationException),但我的方法是抛出NotFoundException(com.sun.jersey.api。 NotFoundException)。
所以我想这样处理:
@Component({
selector: 'app-error-log',
templateUrl: './error-log.component.html',
styleUrls: ['./error-log.component.scss'],
providers: [ErrorLogService]
})
export class ErrorLogComponent implements OnInit {
constructor(
private errorHandlerService: ErrorHandlerService
) {
this.errorHandlerService.apiError$.subscribe(data => {
alert("error in component = " + data);
});
}
onNoClick(): void {
// this.dialogRef.close();
}
ngOnInit() {
this.errorHandlerService.apiError$.subscribe(data => {
alert("error in component = " + data);
});
}
}
但是我得到以下编译时错误:
异常NotFoundException已被备选方案捕获 WebApplicationException
但为什么呢? NotFoundException应该来自一个完全不同的包(球衣),不是吗?
此外 - 如果我将它们放在单独的catch()块中,它可以正常工作。
请帮忙。
答案 0 :(得分:0)
你的synthax错了。见Java Doc。这样做:
try {
} catch (WebApplicationException | NotFoundException e) {
}
答案 1 :(得分:0)
您可以先尝试使用子例外。
try {
} catch (NotFoundException e) {
} catch (WebApplicationException e) {
}
但为什么呢? NotFoundException应该完全来自 不同的包(球衣)
如果您查看jersey's NotFoundException
source code而不是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