Java 如何在一个地方处理不同类型的异常?

Java 如何在一个地方处理不同类型的异常?,java,playframework,Java,Playframework,我使用的是play2.8.x框架,我有以下控制器: public class HomeController extends Controller { public Result show(Http.Request request) throws MyException { ... return ok("some_data"); } } 我想在Spring框架中处理异常: // It is from the Spring web framework

我使用的是
play2.8.x框架
,我有以下控制器:

public class HomeController extends Controller {
    public Result show(Http.Request request) throws MyException {
        ...
        return ok("some_data");
    }
}
我想在
Spring框架中处理异常:

// It is from the Spring web framework
@ExceptionHandler(MyException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ExplainExceptionDTO handleMyException() {
    ...
    return explain;
}

我可以在
play 2.8.x框架中执行类似操作吗?

这很好地解释了这一点:

@Singleton
公共类ErrorHandler实现HttpErrorHandler{
公共完成阶段(
RequestHeader请求、int状态代码、字符串消息){
返回CompletableFuture.completedFuture(
结果.状态(状态代码,“发生客户端错误:“+消息”);
}
public CompletionStage onServerError(RequestHeader请求,可抛出异常){
返回CompletableFuture.completedFuture(
Results.internalServerError(“发生服务器错误:+exception.getMessage());
}
}
您感兴趣的方法是
onServerError
。因此,与其返回默认的internalServerError,不如检查Throwable类型,如果是异常返回
badRequest()
,您甚至可以根据需要提供模板

@Singleton
public class ErrorHandler implements HttpErrorHandler {
  public CompletionStage<Result> onClientError(
      RequestHeader request, int statusCode, String message) {
    return CompletableFuture.completedFuture(
        Results.status(statusCode, "A client error occurred: " + message));
  }

  public CompletionStage<Result> onServerError(RequestHeader request, Throwable exception) {
    return CompletableFuture.completedFuture(
        Results.internalServerError("A server error occurred: " + exception.getMessage()));
  }
}