Выбрасывание исключений методами


Ранее отмечалось, что если метод выбрасывает или может выбросить исключение, которое в методе не обрабатывается, этот факт нужно отразить при описании метода. В сигнатуре метода после ключевого слова throws перечисляются классы исключений, которые может выбрасывать метод. Причина такой предупредительности состоит в том, что внешним методам нужно сообщить, к каким неприятностям следует быть готовым при вызове данного метода. Ранее мы не использовали ключевое слово throws, хотя некоторые методы и выбрасывали исключения. Дело в том, что перечисляются далеко не все выбрасываемые методом исключения. В частности, не нужно явно указывать исключения класса Error, а также класса RuntimeException и его подклассов. Рассматривавшиеся ранее исключения как раз относились к подклассам RuntimeException.

Общий синтаксис описания метода, выбрасывающего исключения (которые не

обрабатываются в методе), выглядит так:

 

тип_результата имя_метода(аргументы) throws исключение1,исключение2,...{

// тело метода

}

Если метод может выбрасывать несколько исключений, их классы перечисляются через запятую. Пример описания метода, выбрасывающего необрабатываемое исключение, приведен в листинге 8.

Листинг 8.Метод выбрасывает исключение

class ThrowsDemo{

// Описание метода:

static void throwOne() throws IllegalAccessException{

System.out.println("Ошибка в методе throwOne!");

// Выбрасывание исключения:

throw new IllegalAccessException("Большая ошибка!");}

public static void main(String args[]){

try{

throwOne(); // Метод выбрасывает исключение

}catch(IllegalAccessException e){ // Обработка исключения

System.out.println("Случилась неприятность: "+e);}

}}

В результате выполнения этой программы получаем два сообщения:

Ошибка в методе throwOne!

Случилась неприятность: java.lang.IllegalAccessException: Большая ошибка!

Программа достаточно простая и ее особенность лишь в том, что при описании метода throwOne() явно указано, что метод может выбрасывать исключение класса IllegalAccessException (ошибка доступа).

Методом throwOne() выводится на экран сообщение об ошибке, затем выбрасывается исключение командой:

throw new IllegalAccessException("Большая ошибка!")

В данном случае исключение — это анонимный объект класса IllegalAccessException, для создания которого использовался конструктор с текстовым аргументом. В методе это исключение не отслеживается и не обрабатывается, о чем и свидетельствует наличие в сигнатуре метода ключевого слова throws и названия класса исключения IllegalAccessException. Отметим, что если бы это исключение в методе обрабатывалось, необходимости указывать в сигнатуре метода ключевое слово throws (и класса исключения) не было бы.

В главном методе программы вызывается метод throwOne(), выбрасываемое методом исключение отслеживается и обрабатывается. Объект (анонимный) выброшенного методом исключения передается в блок catch.



Дата добавления: 2016-06-22; просмотров: 2200;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.