Они могут обрабатываться , но вам не нужно . Если вы не обработаете их, они будут распространяться и подниматься вверх по стеку вызывающих методов, пока один из них не поймает его. Если этого не произойдет, программа завершится сбоем.
Как правило, суть в том, что если разумно ожидать, что клиент восстановится после исключения, то это должно быть проверенное исключение . Если клиент не может сделать что-либо для восстановления после исключения, тогда можно использовать его как исключение .
.
Кроме того, проверенные исключения полезны для документирования API, который, как вы ожидаете, будет использоваться третьими сторонами. Когда они узнают, что ваш метод может вызвать конкретное исключение, они будут соответствующим образом кодировать и обрабатывать регистр. Если вы используете только непроверенные исключения , все ставки отключены.
Распространенная схема (некоторым людям это не нравится, но в некоторых случаях это нормально, когда вы знаете, что делаете) - заключать выброшенные проверенные исключения в не проверенные.
try {
... code that can throw CheckedException ...
} catch (CheckedException oopsSomethingBadHappened) {
throw new RuntimeException("Something bad happened!", oopsSomethingBadHappened);
}