Крім того, що визначена виняткова ситуація може бути порушена виконуючою системою Java, програміст сам може явно породити помилку. Робиться це за допомогою оператора throw. Наприклад:
...public int calculate(int theValue) { if( theValue < 0) { throw new Exception( "Параметр для обчислення не повинен бути негативним"); }}...
У цьому випадку передбачається, що як параметр методу може бути передане тільки позитивне значення; якщо ця умова не виконана, то за допомогою оператора throw породжується виняткова ситуація.
Метод повинен делегувати обробку виняткової ситуації його коду, що викликав. Для цього в сигнатурі методу застосовується ключове слово throws, після якого повинні бути перераховані через кому всі виняткові ситуації, які може викликати даний метод. Таким чином, створення виняткової ситуації в програмі виконується за допомогою оператора throw з аргументом, значення якого може бути наведене до типу Throwable.
У деяких випадках після обробки виняткової ситуації може виникнути необхідність передати інформацію про неї в поточний код.
Рисунок 6.1– Ієрархія класів стандартних виключень
Створення користувальницьких класів виключень
Як ми вже відзначали, допускається створення власних класів виключень. Для цього досить створити свій клас, успадкувавши його від будь-якого спадкоємця java.lang.Throwable (або від самого Throwable).
Перевизначення методів і виключення
При перевизначенні методів варто пам'ятати, що якщо переобумовлений метод повідомляє список можливих виключень, те перевизначальний метод не може розширювати цей список, але може його звужувати.
Тема 7 Контейнери, колекції. Робота з датою та часом. Пакет java.util