Предложение throws
Предложение throws используется в сигнатуре метода
для указания исключений, которые метод может выбросить,
но не обрабатывает внутри себя. В качестве параметров
через запятую перечисляются типы исключений, которые
метод делегирует вызывающему коду. Если метод выбрасывает
проверяемое исключение, но не обрабатывает его, он обязан
указать это исключение в предложении throws.
Синтаксис
public void methodName() throws ExceptionType1, ExceptionType2
{
// тело метода
}
Пример
Давайте создадим метод checkAge, который выбрасывает
исключение IllegalArgumentException, если возраст
меньше 18. В сигнатуре метода укажем это исключение
через throws:
public class Main
{
public static void checkAge(int age) throws IllegalArgumentException
{
if (age < 18)
{
throw new IllegalArgumentException("Age must be at least 18");
}
System.out.println("Access granted");
}
public static void main(String[] args)
{
try
{
checkAge(15);
}
catch (IllegalArgumentException e)
{
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Age must be at least 18"
Пример
Давайте создадим метод parseNumber, который может
выбросить проверяемое исключение NumberFormatException
при попытке преобразовать некорректную строку в число.
Укажем это исключение в предложении throws:
public class Main
{
public static int parseNumber(String str) throws NumberFormatException
{
return Integer.parseInt(str);
}
public static void main(String[] args)
{
try
{
int res = parseNumber("abcde");
System.out.println(res);
}
catch (NumberFormatException e)
{
System.out.println("Invalid number format");
}
}
}
Результат выполнения кода:
"Invalid number format"
Пример
Давайте создадим метод divide, который выбрасывает
исключение ArithmeticException при делении на ноль.
Укажем это исключение в предложении throws:
public class Main
{
public static int divide(int a, int b) throws ArithmeticException
{
return a / b;
}
public static void main(String[] args)
{
try
{
int res = divide(10, 0);
System.out.println(res);
}
catch (ArithmeticException e)
{
System.out.println("Division by zero");
}
}
}
Результат выполнения кода:
"Division by zero"