Ответ
throw — это оператор для явного создания и выброса исключения внутри тела метода или блока кода.
throws — это декларация в сигнатуре метода, указывающая, что метод может выбросить указанные проверяемые исключения (checked exceptions), не обрабатывая их внутри.
Ключевые отличия:
- Место использования:
throwиспользуется внутри метода,throws— в его объявлении. - Назначение:
throwсоздает и инициирует исключение,throwsлишь предупреждает вызывающий код о возможных исключениях. - Синтаксис:
throw— оператор, за которым следует объект исключения.throws— ключевое слово, за которым следует список классов исключений.
Пример:
// Метод объявляет, что может выбросить IOException (throws)
public void readFile(String path) throws IOException {
File file = new File(path);
// Оператор throw создает и выбрасывает исключение
if (!file.exists()) {
throw new IOException("Файл не найден: " + path);
}
// ... чтение файла
}
Практическое правило: Используйте throw для генерации исключений, а throws для передачи ответственности за обработку проверяемых исключений вверх по стеку вызовов.