Как правило, вы всегда должны ловить java.lang.Error
и записывать его в журнал или отображать его пользователю. Я работаю в поддержке и ежедневно вижу, что программисты не могут сказать, что произошло в программе.
Если у вас есть поток демона, вы должны предотвратить его прерывание. В других случаях ваше приложение будет работать правильно.
Вы должны ловить java.lang.Error
только на самом высоком уровне.
Если вы посмотрите на список ошибок, вы увидите, что большинство из них могут быть обработаны. Например, ZipError
возникает при чтении поврежденных zip-файлов.
Наиболее распространенными ошибками являются OutOfMemoryError
и NoClassDefFoundError
, которые в большинстве случаев являются проблемами во время выполнения.
Например:
int length = Integer.parseInt(xyz);
byte[] buffer = new byte[length];
может выдать OutOfMemoryError
, но это проблема времени выполнения и нет причин для завершения вашей программы.
NoClassDefFoundError
в основном, если библиотека отсутствует или вы работаете с другой версией Java. Если это необязательная часть вашей программы, вам не следует прерывать ее.
Я могу привести еще много примеров того, почему стоит поймать Throwable
на верхнем уровне и выдать полезное сообщение об ошибке.