В чем разница между 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предупреждает о возможности его возникновения.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться