апи. Сейчас там try-catch в каждом контроллере на самом верху и возврат сообщения с ошибкой, в каждом контроллере разный. В спринге есть класс ContollerAdvice для глобального перехвата ошибок со всех контроллеров.
Как мне быть в таком случае? Ну т.е. я могу там ExceptionHandler прописать но у меня не будет инфы откуда вылетел эксепшн, в каком контроллере конкретно и какой текст мне выдавать обратно.
Либо мне также оставить на самом верху каждого контроллера try-catch и в catch кидать новый эксепшн с нужным текстом ошибки и другой инфой для обработки. Тогда кажется что смысл немного теряется в общем ContollerAdvice.
Как правильнее сделать?
Пусть из каждого контроллера будет выкидывается какое-то кастомное искобчение RuntimeExceptionControler_1 RuntimeExceptionControler_2 RuntimeExceptionControler_3 затем в хендлере для каждого класса пишешь свой обработчик
но вообще странно это все. Зачем привязывать ошибку к контроллеру. Обычно делять ошибки по типам 1. Бизнес ошибки 2. Ошибки уровня приложения (подключения к БД, обращение к другим сервисам) И затем для каждого типа делают обработчик и общий какой мессадж
А там так не получится. Там много логики и может быть любое исключение от NullPointerException до обычных Excption с каким-то текстом. И при том, это уже не изменить. Т.е. Сделать так, чтобы в контроллере мог вылетать только конкретный эксепшн не получится. Тогда остается, как я и думал, перехватывать все исключения в контроллере и кидать кастомный какой-то и уже его обрабатывать в эдвайсе? Просто казалось это выглядит как-то странно и бессмысленно что ли
так в конструкторе исключения нужный текст напиши
А я не могу там написать, только если вот как говорил, перехватывать и свой кидать
Обсуждают сегодня