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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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