Когда использовать Checked Exceptions и Unchecked? 1. Unchecked использовать, когда нужно разделить обычный код и код для хендлинга ошибок (пример в Spring Controller и Controller Advice). Есть ещё критерии, по которым нужно определять, какие эксепшены использовать?
Я считаю, что проверяемые исключения нужны в тех случаях, когда ты пишешь библиотеку, которая будет использоваться другими разработчиками. С помощью проверяемых исключений можно явно определить контракт метода. Если использовать при этом непроверяемые исключения, то невнимательный пользователь библиотеки может забыть обработать возможное исключение и получить неприятное поведение в рантайме.
Поэтому ты явно говоришь, что метод кидает вот такой эксепшен и пользователь обязан его обработать, например обернув проверяемое исключение в непроверяемое с его последующим отлавливанием в ControllerAdvice или ещё где. Или пользователь волен проигнорировать исключение. Или пустить поток выполнения по плану Б