Когда пользователь отправляет неверные входные данные, будь то неправильно отформатированный json, неправильные типы для @FormParam или что-то еще, обычно мы хотим вернуть 400 с основным сообщением. С ExceptionMapper это не может быть большой проблемой.
В случае проблем @FormParam, например, RestEasy уже генерирует хорошие исключения BadRequestExceptions, когда это происходит, поэтому ExceptionMapper может просто вернуть ответ на них.
Но мы также используем RestEasy для дальнейших вызовов API, поэтому для пример...
- Пользователь A вызывает (нашу) службу X
- Служба X вызывает службу Y (может быть нашей, а может и не быть нашей)
- Запрос от пользователя A был каким-то «неправильным»
- Запрос, отправленный службой X в службу Y, был каким-то «неправильным»
Итак, вопрос в том, могу ли я как-то различить первый и второй случай, поскольку в во втором случае я бы предпочел ошибку 500 вместо ошибки 400, которую видит пользователь? Что я могу, конечно, сделать, так это проанализировать трассировку стека и посмотреть, произошло ли это в клиенте или базовой библиотеке, но, честно говоря, это кажется... неразумным.
Так есть ли у RestEasy хороший способ узнать, какие исключения произошли до того, как они достигнут нашего кода (при обработке запроса на чисто техническом уровне), и какие исключения происходят позже, так сказать, в «бизнес-коде»?
Подробнее здесь: https://stackoverflow.com/questions/797 ... exceptions
Мобильная версия