Вот еще один из вопросов, который относится к базовым знаниям. Какие виды ошибок бывают в Java и чем они отличаются?
Ну во-первых, все классы обрабатывающие ошибки являются наследниками класса java.lang.Throwable. Только объекты этого класса или его наследников могут быть "брошены" JVM при возникновении какой-нибудь исключительной ситуации, а также только эти объекты могут быть "брошены" во время выполнения программы с помощью ключевого слова throw.
Прямыми наследниками класса Throwable являются Error и Exception.
Error - это подкласс, который показывает серьезные проблемы возникающие во время выполнения приложения. Большинство из этих ошибок сигнализируют о ненормальном ходе выполнения программы, т.е. о каких-то критических проблемах. Эти ошибки не рекомендуется отмечать в методах посредством throws-объявления, поэтому они также очень часто называются непроверяемые (unchecked). Примерами таких исключений являются: ThreadDeath, VirtualMachineError, OutOfMemoryError.
Exception - это подкласс исключений, которые приложение может "выбрасывать" во время своей работы и которые должны быть обработаны в тех методах, где они возникают, или "проброшены" дальше, для обработки на более позднем этапе. Это обычно проверяемые (checked) исключения. Примерами являются: ClassNotFoundException, IOException.
У класса Exception есть один подкласс, который не рекомендуется декларировать в методах с помощью throws. Это RuntimeException и все его наследники. Исключения этого типа возникают во время выполнения программы. Поскольку они могут возникнуть в любом методе, то пришлось бы декларировать их везде, что существенно усложнило бы жизнь разработчикам. Вместо этого рекомендуется в коде программы делать необходимые проверки, чтоб избежать возникновения этих исключений. Пример:
......................................................... public String myMethod(Object param1){ // Проверяем параметр param1 на null, чтоб не допустить NullPointerException if(param1 != null){ return param1.toString(); } // Если же он null, то возвращаем пустую строку return ""; }
Комментариев нет:
Отправить комментарий