Я думаю, что мы можем думать об освобождении от нескольких вопросов:
почему происходит исключение? Что мы можем сделать, когда это произойдет
по ошибке выдается ошибка. , например, вызывается метод нулевого объекта.
String name = null;
... // some logics
System.out.print(name.length()); // name is still null here
Этот тип исключения должен быть исправлен во время теста. В противном случае, это нарушает производство, и вы получаете очень большую ошибку, которую нужно немедленно исправить. Этот вид исключений не нужно проверять.
с помощью внешнего ввода, вы не можете контролировать или доверять выходу внешнего сервиса.
String name = ExternalService.getName(); // return null
System.out.print(name.length()); // name is null here
Здесь вам может потребоваться проверить, является ли имя пустым, если вы хотите продолжить, если оно пустое, в противном случае вы можете оставить его в покое, и оно остановится здесь и выдаст вызывающему исключение времени выполнения.
Этот тип исключений проверять не нужно.
по исключению времени выполнения из внешнего, вы не можете управлять или доверять внешней службе.
Здесь вам может понадобиться перехватить все исключения из ExternalService, если вы хотите продолжить, когда это произойдет, в противном случае вы можете оставить его в покое, и он остановится здесь и выдаст вызывающему исключение времени выполнения.
по проверенному исключению из внешнего источника, вы не можете управлять или доверять внешней службе.
Здесь вам может понадобиться перехватить все исключения из ExternalService, если вы хотите продолжить, когда это произойдет, в противном случае вы можете оставить его в покое, и он остановится здесь и выдаст вызывающему исключение времени выполнения.
В этом случае нам нужно знать, какое исключение произошло в ExternalService? Это зависит от:
если вы можете обрабатывать некоторые виды исключений, вам нужно их перехватить и обработать. Для других, пузырь их.
если вам нужен лог или ответ пользователю конкретного исполнения, вы можете их перехватить. Для других, пузырь их.