Вы хотите обработать исключение там, где оно возникает, если и только если вы действительно можете что-то сделать, чтобы это исправить.
Вот типичный пример:
int foo(String userInput) {
int i = Integer.parseInt(userInput);
return i * 4;
}
Это приведет ккроме строковых входов не чисел.Но вы ничего не можете с этим поделать, поэтому вы позволяете ему распространяться.
Вот еще один пример
class Communicator {
private InputStream in;
private OutputStream out;
public Communicator(Socket socket) throws IOException {
in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
}
}
Если сокет вызывает IOException, вы можете ожидать восстановления и созданиячто коммуникатор еще работает?Думаю, нет.Отпусти его, дай ему распространиться и найди кого-нибудь, кто сможет с этим справиться.
Кроме того, ты должен знать, что тебе не нужно catch
или объявить throws
для всех исключения.Если это RuntimeException
, вам не нужно.Для части Большинство эти исключения обычно означают ошибки (NullPointerException, кто-нибудь?) Или неправильный ввод данных пользователем (NumberFormatException.)