Обычно при программировании вы должны ловить только определенное исключение (например, IOException
). Во многих программах вы можете увидеть очень высокий уровень
try {
...
} catch(Exception e) {
...
}
Это ловит все ошибки, которые могут быть исправлены, и все те, которые указывают на ошибку в вашем коде, например InvalidArgumentException
, NullPointerException
. Затем вы можете автоматически отправлять электронную почту, отображать окно сообщения или что угодно, так как сама JavaVM все еще работает нормально.
Все, что происходит от Error
- это что-то очень плохое, с этим ничего не поделаешь. Вопрос в том, имеет ли смысл ловить OutOfMemoryError
или VirtualMachineError
. (Это ошибка в самом JavaVM, возможно, вы даже не можете отобразить окно сообщения или отправить электронное письмо)
Вероятно, вы не должны быть классом, производным от Error
, вы должны наследовать от Exception
или RuntimeException
.