Непроверенные исключения в Java: унаследовать от Error или RuntimeException? - PullRequest
2 голосов
/ 05 января 2010

Я хотел бы обрабатывать ошибки с (непроверенными) исключениями. Я слышал, что для каждого вида исключений я должен создать подкласс либо Error, либо RuntimeException. Какая разница?

Ответы [ 4 ]

7 голосов
/ 05 января 2010

Errors должно идентифицировать программно неисправимые проблемы (например, нехватка памяти).Exceptions должен идентифицировать программно восстанавливаемые проблемы, которые вызваны неожиданными условиями вне контроля кода (например, отключение базы данных).RuntimeExceptions должен идентифицировать программно восстанавливаемые проблемы, которые вызваны ошибками в потоке кода (читай: ошибки разработчика, такие как нулевой указатель, недопустимый аргумент и т. Д.).

В вашем случае вы хотитенаследовать от RuntimeException.

1 голос
/ 05 января 2010

RuntimeException - это особый вид исключений, исключений, которые компилятор не будет отлавливать. Ошибка - это то, что выбрасывается при возникновении серьезных проблем с системой. Не существует тесной связи между Error и RuntimeException. Ваш кажется ближе к RuntimeException.

1 голос
/ 05 января 2010

Всегда используйте RuntimeException - я практически никогда не видел случая для ошибки.

Я слышал то же самое о создании вашего собственного исключения, хотя и не совсем понимаю. Часто это полезно, но я все время использую InvalidArgumentException.

1 голос
/ 05 января 2010

Я думаю, что в JavaDocs все сказано:

An Error является подклассом Throwable * что указывает на серьезные проблемы, которые разумное применение * не должно попробуй поймать. Большинство таких ошибок ненормальные условия. * The ThreadDeath ошибка, хотя «нормальное» состояние, * также подкласс Error, потому что большинство приложений * не должны пытаться поймай это.

Это такие вещи, как стекопоток, нехватка памяти ... вы хотите расширить RuntimeException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...