java - 除非明确捕获,否则异常不会显示在控制台中

标签 java logging exception spark-java

我正在使用 SparkJava,除非我明确捕获它们,否则路由中引发的异常似乎不会显示在控制台中。

例如,给定

Spark.post("/lookup", this::lookup);

private String lookup(Request req, Response res) {
    // some stuff
    return json.toString();
}

如果 //some stuff 抛出异常,则控制台中不会显示任何内容。但是,如果我显式捕获并打印异常,它会按预期将其打印到控制台。

private String lookup(Request req, Response res) {
    try {
    // some stuff
    } catch(Exception e) {e.printStackTrace();}
    return json.toString();
}

这让我相信在路由调用堆栈的更深处,所有异常都被捕获并隐藏。

正如您可以想象的,这种行为会导致一些相当令人沮丧的调试。有什么方法可以使所有异常始终显示在控制台中吗?

最佳答案

在您的主类中,在任何路线之前添加以下内容:

    exception(Exception.class, (exception, request, response) -> {
        exception.printStackTrace();
    });

应用程序代码未捕获的任何异常现在都将转储到控制台。

(IMO Spark 默认情况下应该执行此操作...)

关于java - 除非明确捕获,否则异常不会显示在控制台中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42322158/

相关文章:

java - 输入流关闭和 Sonar 问题

java - Android 应用的 JSON 编码数据

c# - STA 线程异常传播

actionscript-3 - ActionScript 冲突 : solving exceptions and strange cases

java.awt.color 到 java.lang.string 转换

c# - 记录器错误 问题

java - 如何分离Log4j配置?

logging - 改造:如何获得请求和响应的大小?

c# - 抛出类型为 'System.Data.StrongTypingException' C# 的异常

java - 正确抛出和捕获异常