RestEasy сопоставляет клиентские и серверные исключенияJAVA

Программисты JAVA общаются здесь
Anonymous
RestEasy сопоставляет клиентские и серверные исключения

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/797 ... exceptions

Вернуться в «JAVA»