Page 230 - 6253
P. 230
}
public static void main(String[] args) {
try {
setAge(23);
setAge(-5);
} catch (RuntimeException e) {
e.printStackTrace();
}
System.out.print(getAgeWoman());
}
}
У методі setAge() через генерацію винятку відбувається передчасний вихід з
блоку try, але до виходу із методу виконується блок finally. Метод getAgeWoman()
завершує роботу виконанням оператора return в блоці try, але при цьому перед
виходом з методу виконується також код блоку finally.
9.4 Власні виняткові ситуації
Розробник може створити власний виняток, шляхом створення підкласу класу
Exception і пізніше використовувати його при обробці виняткових ситуацій, які не є
винятками з точки зору мови, але порушують логіку програми. Наприклад, поява
об'єктів типу Student з від'ємним значенням поля age.
// Виклик власної виняткової ситувації RunnerLogic з методу salary()
public class RunnerLogic {
public static double salary(int coeff) throws SalaryException {
double d;
try {
if ((d = 10-100/coeff) < 0)
throw new SalaryException("Від'ємна заробітня плата");
else
return d;
} catch (ArithmeticException e) {
229