我使用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();
}
这使我相信,在路由调用堆栈的更深处,所有异常都会被捕获和隐藏。
正如你可以想象的,这种行为导致一些相当令人沮丧的调试。有什么办法可以让所有的异常总是显示在控制台中?
尝试搜索“Java的火花吞咽异常” – Carcigenicate
你心里有一个特定的链接?我尝试过搜索,但找不到任何东西(也许我只是一个糟糕的搜索者:() – misaka
不,我只知道图书馆吞并异常并不罕见,例如,我使用Quil库(用于Clojure) ,并且默认情况下它会吞下所有的异常,但是它有一个选项,但是我们从来没有使用过SparkJava,但是如果这是吞咽异常,它可能会有一个设置,对不起,我无法提供更多帮助 – Carcigenicate