2017-02-19 19 views
0

Я использую 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(); 
} 

Это заставляет меня поверить, что где-то еще дальше по маршруту вызова, все исключения пойманы и спрятаны.

Как вы можете себе представить, такое поведение приводит к некоторой довольно отлаженной отладке. Есть ли способ сделать это так, чтобы все исключения всегда отображались в консоли?

+0

Попробуйте поискать «Java искры глотания исключения» – Carcigenicate

+0

У вас есть определенное звено в виде? Я попробовал поиск, но ничего не нашел (может быть, я просто плохой поисковик :() – misaka

+0

Нет, я просто знаю, что библиотеки нередко проглатывают исключения. Например, я использую библиотеку Quil (для Clojure) , и по умолчанию он проглатывает все исключения. У него есть опция, но разрешить исключения как обычно. Я никогда не использовал SparkJava, но если это он проглатывает исключения, у него может быть параметр. Извините, я не могу больше помочь – Carcigenicate

ответ

2

в главном классе, перед любыми путями, добавьте это:

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

Любое исключение не иначе пойманы код приложения теперь будут сброшены на консоль.

(Спарк ИМО должны делать это по умолчанию ...)

+0

Огромное вам спасибо! Я обратился к уродливому решению придерживаться всех моих маршрутов в классе-оболочке, который поймал какие-то исключения, это выглядит намного приятнее. Абсолютно согласен, что это должно быть по умолчанию .. – misaka