java - 如何在一个地方处理不同类型的异常?
问题描述
我正在使用play 2.8.x framework
并且我有以下控制器:
public class HomeController extends Controller {
public Result show(Http.Request request) throws MyException {
...
return ok("some_data");
}
}
我想做一些类似的事情Spring framework
来处理异常:
// It is from the Spring web framework
@ExceptionHandler(MyException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ExplainExceptionDTO handleMyException() {
...
return explain;
}
我可以在里面做这样的事情play 2.8.x framework
吗?
解决方案
这很好地解释了它:https ://www.playframework.com/documentation/2.8.x/JavaErrorHandling
@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()));
}
}
您感兴趣的方法是onServerError
. 因此,不要返回默认的 internalServerError 检查 Throwable 类型,如果它是您的异常 return badRequest()
,您甚至可以根据需要提供模板。
推荐阅读
- javascript - 为什么我的视频背景不会通过我的组件出现?
- typescript - 如何将函数声明为具有强制参数的类型
- ibm-cloud - 在 Watson 助手中保存用户输入(字符串)
- node.js - 从nodejs中的孩子更新全局变量值
- python - 永久更改 Mac 终端中的目录?(自动化无聊的东西第 6 章)
- algorithm - 生成 2 个范围内的随机非重复数字对
- amazon-web-services - AWS Cognito TOKEN 端点给出 400 Bad Request 错误“unauthorized_client”
- android-studio - Android Studio 对布局所做的更改未反映在应用程序中?
- java - 如何将菜单设置为 AppBarLayout
- javascript - Javascript 中 CSV 单元格的未定义值