首页 > 解决方案 > 记录任何抛出的 Throwable

问题描述

我正在使用播放框架的 2.5.19 版本。

假设我有一个播放框架控制器,如下所示:

public class ExceptionTest extends Controller{
    public Result classLoadFail() {
        LogManager.getLogger().info("Starting class load fail test");
        throw new NoSuchMethodError();
    }
    public Result generalFail() {
        LogManager.getLogger().info("Runtime Exception");
        throw new RuntimeException();
    }
}

所以这一切都是写入日志并抛出一个 Throwable,每个方法都不同。我有一个 ErrorHandler 具有以下内容:

@Override
public CompletionStage<Result> onServerError(Http.RequestHeader request, java.lang.Throwable exception) {
    LogManager.getLogger().error("Throwable", exception);
    return super.onServerError(request, exception);
}

如果我调用激活 generalFail 的路由,我会在我的日志中从 onServerError 得到错误级别的内容,这正是我所期望的。如果我调用激活 classLoadFail 的路由,我什么也得不到。事实上,在浏览器中,我什至根本没有得到响应代码。

如果出现错误,我该如何获取它,至少它会显示在日志中?理想情况下,我还想知道如何让它将 500 发送回网络浏览器,但至少如果发生这种糟糕的事情,我真的很想在日志中了解它。

标签: playframework

解决方案


推荐阅读