多捕获中的WebApplicationException和NotFoundException

时间:2018-02-22 11:01:52

标签: java multi-catch

所以我的问题是:

基本上我是一个带有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()块中,它可以正常工作。

请帮忙。

2 个答案:

答案 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类。因此,WebApplicationExceptioncom.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