← Назад ко всем вопросам

В чем разница между throw и throws в Java?

1️⃣ Как кратко ответить

throw используется для явного выбрасывания исключения в коде, тогда как throws указывает, что метод может выбросить исключение, которое должно быть обработано вызывающим кодом.

2️⃣ Подробное объяснение темы

В Java исключения используются для обработки ошибок и других исключительных ситуаций. Понимание разницы между throw и throws важно для правильного управления исключениями.

throw

throw — это оператор, который используется для явного выбрасывания исключения в коде. Когда в программе возникает ситуация, требующая обработки, вы можете использовать throw для создания и выбрасывания экземпляра исключения. Это позволяет вам контролировать, когда и какое исключение будет выброшено.

Пример использования throw:

public class Example {
    public static void main(String[] args) {
        try {
            checkAge(15);
        } catch (Exception e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }
​
    public static void checkAge(int age) {
        if (age < 18) {
            // Явно выбрасываем исключение IllegalArgumentException
            throw new IllegalArgumentException("Age must be 18 or older.");
        }
        System.out.println("Access granted.");
    }
}
  • if (age < 18): Проверка условия, если возраст меньше 18.
  • throw new IllegalArgumentException("Age must be 18 or older.");: Если условие истинно, создается и выбрасывается исключение IllegalArgumentException с сообщением.
  • try и catch: Используются для перехвата и обработки выброшенного исключения.

throws

throws — это ключевое слово, используемое в объявлении метода, чтобы указать, что метод может выбросить одно или несколько исключений. Это предупреждает вызывающий код о необходимости обработки этих исключений.

Пример использования throws:

import java.io.FileNotFoundException;
import java.io.FileReader;
​
public class Example {
    public static void main(String[] args) {
        try {
            readFile("nonexistentfile.txt");
        } catch (FileNotFoundException e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }
​
    // Метод объявляет, что может выбросить FileNotFoundException
    public static void readFile(String fileName) throws FileNotFoundException {
        FileReader file = new FileReader(fileName);
        System.out.println("File opened successfully.");
    }
}
  • public static void readFile(String fileName) throws FileNotFoundException: Объявление метода с использованием throws, указывающее, что метод может выбросить FileNotFoundException.
  • FileReader file = new FileReader(fileName);: Попытка открыть файл, которая может вызвать FileNotFoundException.
  • try и catch: Используются для обработки исключения, если оно выброшено методом readFile.

Основные отличия

  • throw используется внутри метода для явного выбрасывания исключения.
  • throws используется в объявлении метода для указания, что метод может выбросить исключение, которое должно быть обработано вызывающим кодом.
  • throw инициирует исключение, тогда как throws предупреждает о возможности его возникновения.

Тема: Java
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки