Назад Зміст Вперед

9.5. Оператор throws

Якщо метод породжує виняток і не обробляє його, то він повинен вказати про це, щоб обробка винятку була здійснена у місці виклику даного методу. Це здійснюється за допомогою застереження throws в оголошенні методу. Після нього вказується підряд через кому усі винятки, які можуть бути викинуті методом, окрім винятків класів Error та RuntimeException і їхніх підкласів. Нагадаємо, що клас Error – це необроблювані винятки, RuntimeException – винятки, які виникають в результаті помилки програміста (вихід за межі масиву, нульове посилання, невірне перетворення типів). Інші винятки – це помилки доступу, які доволі часто вимагають відповідної обробки.

Загальна форма оголошення методу наступна:
тип ім’я_методу(список_параметрів) throws список_винятків
{
// тіло методу
}
Наступна програма демонструє використання throws у методі де виникає виняток IllegalAccessException.
public class ThrowsException {
    public static void exceptionMethod () throws IllegalAccessException{
        System.out.println("Всередині exceptionMethod().");
        throw new IllegalAccessException("Помилка доступу");
          
    }
     public static void main(String args[]){
        try{
           exceptionMethod(); 
           System.out.println("Кінець програми"); //даний рядок не буде виведений
        }catch(IllegalAccessException e){
           System.out.println("Наш витяток: "+e);
        }           
    }
}
Результат:
Всередині ExceptionMethod().
Наш витяток: java.lang.IllegalAccessException: Помилка доступу

Як бачимо тепер обробка винятку відбувається у методі main(). Без інструкції try-catch програма призупинятиметься з друком відбитку стеку. Слід зауважити, що у методах інструкція throw поводить себе подібно до інструкції return. Тобто виконання методу припиняється і відбувається повернення в місце виклику методу.
.