play 框架中的全局异常处理 java 2.3.7
Global Exception Handling in play framework java 2.3.7
我正在尝试使用 Java 在 Play 框架 (RESTful) 中实现全局异常处理。在搜索时我发现扩展 GlobalSettings
和覆盖 onError
方法应该处理所有错误并给出适当的 response/view。但是在我执行 "activator run" 的控制台中,我仍然得到丑陋的异常堆栈跟踪。有没有办法停止打印堆栈跟踪或者 Play 框架真的在处理异常?
@Override
public Promise<Result> onError(RequestHeader request, Throwable t) {
return Promise.<Result>pure(Results.status(200, tr.getLocalizedMessage()));
}
我遇到了同样的问题。日志记录以某种方式独立于 Global 中的 onError() 方法发生。我用 Action composition.
解决了这个问题
public class VerboseAction extends play.mvc.Action.Simple {
public F.Promise<Result> call(Http.Context ctx) throws Throwable {
Promise<Result> call;
try {
call = delegate.call(ctx);
} catch (Exception e) {
Logger.error("Exception during call " + Controller.request().uri()
+ ": " + e.getMessage(), e);
call = Promise.<Result> pure(redirect(controllers.routes.Home
.error(e.getMessage())));
}
return call;
}
}
只需使用此新注释注释您的 Controller 或您的 Controller 方法,所有异常都会被捕获。您可以捕获不同的异常并以不同的方式处理它们。此外,如果您有 Ajax 个电话,您不想 return / 重定向到网站。
我正在尝试使用 Java 在 Play 框架 (RESTful) 中实现全局异常处理。在搜索时我发现扩展 GlobalSettings
和覆盖 onError
方法应该处理所有错误并给出适当的 response/view。但是在我执行 "activator run" 的控制台中,我仍然得到丑陋的异常堆栈跟踪。有没有办法停止打印堆栈跟踪或者 Play 框架真的在处理异常?
@Override
public Promise<Result> onError(RequestHeader request, Throwable t) {
return Promise.<Result>pure(Results.status(200, tr.getLocalizedMessage()));
}
我遇到了同样的问题。日志记录以某种方式独立于 Global 中的 onError() 方法发生。我用 Action composition.
解决了这个问题public class VerboseAction extends play.mvc.Action.Simple {
public F.Promise<Result> call(Http.Context ctx) throws Throwable {
Promise<Result> call;
try {
call = delegate.call(ctx);
} catch (Exception e) {
Logger.error("Exception during call " + Controller.request().uri()
+ ": " + e.getMessage(), e);
call = Promise.<Result> pure(redirect(controllers.routes.Home
.error(e.getMessage())));
}
return call;
}
}
只需使用此新注释注释您的 Controller 或您的 Controller 方法,所有异常都会被捕获。您可以捕获不同的异常并以不同的方式处理它们。此外,如果您有 Ajax 个电话,您不想 return / 重定向到网站。