Используя Thorntail версии 2.2.0.Final и RESTEasy версии 3.0.24.Final, мы пытаемся создать универсальный ExceptionMapper
, который бы возвращал 500 для всех необработанных исключений, то есть для любого экземпляра Exception
, такого какNullPointerException
, ArrayOutOfBoundsExecption
и т. Д.
Нам удалось сделать это довольно легко, но мы столкнулись с действительно проблемной проблемой;создавая ExceptionMapper
для Exception
, он также вызывается при работе с WebApplicationException
и RESTEasy Failure
.
Поскольку поведение по умолчанию для этих двух типов исключений является правильным в нашем случаемы подумали, что просто возвращая Response
(то есть null
) для них в методе toResponse
, код продолжит обрабатывать их с поведением по умолчанию.
Однако, когда мы протестировалиполучил 204, когда ожидаемый ответ был 401 (NotAuthorizedException).
Я посмотрел на код, и handleException
метод , похоже, ведет себя так, как мы и думали;однако, глядя на метод executeExceptionMapper
, мы были озадачены происходящим поведением, поскольку, если метод toResponse
возвращает null
, возвращается 204, а метод executeExactExceptionMapper
не ведет себя таким образом, он просто позволяет исключению перейти к следующему обработчику;почему разница?