Ключевое слово throws в сигнатуре метода указывает, какие проверяемые (checked) исключения метод может выбросить. Это обязывает вызывающий код либо обработать их в try-catch, либо тоже объявить throws. Непроверяемые исключения (RuntimeException и наследники) объявлять не обязательно. Правильное использование throws помогает компилятору следить за обработкой ошибок.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Блок try-catch.
- Множественные блоки catch.
- Блок finally.
- Выброс исключения (throw).
- Проброс исключения (throws).
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Добавь throws в сигнатуру
В этом задании вам нужно дополнить объявление метода, который может выбросить исключение типа IOException. В коде метод readFileData() вызывает метод Files.readAllBytes(), который объявлен с throws IOException. Однако в текущем объявлении метода readFileData() отсутствует ключевое слово throws. Ваша задача — добавить пропущенное ключевое слово и тип исключения в сигнатуру метода, чтобы код успешно компилировался. Обратите внимание, что тело метода менять не нужно.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileReader {
public static byte[] readFileData(String filePath) input1S {
return Files.readAllBytes(Paths.get(filePath));
}
public static void main(String[] args) {
try {
byte[] data = readFileData("example.txt");
System.out.println("File read successfully");
} catch (IOException e) {
System.out.println("Error reading file: " + e.getMessage());
}
}
}2. Исправь ошибку компиляции
В данном фрагменте кода Java присутствует ошибка компиляции, связанная с обработкой проверяемых исключений. Метод вызывает другой метод, который объявлен с использованием ключевого слова throws для проброса исключения, но сам не обрабатывает это исключение и не объявляет его в своей сигнатуре. Найдите строку с ошибкой и исправьте её, чтобы код успешно компилировался.
import java.io.IOException; public class FileProcessor { public static void readFile() throws IOException { // Код, который может выбросить IOException } public static void processFile() { readFile(); // Ошибка компиляции здесь }}3. Скомпилируется ли код?
Проанализируйте приведённые фрагменты кода на Java. Выберите все варианты, которые успешно скомпилируются без ошибок. Обратите внимание на использование ключевого слова throws, обработку исключений в блоках try-catch и объявление исключений в сигнатурах методов.
Рассмотрите следующие фрагменты кода:
Фрагмент 1:
import java.io.*;
class Test1 {
void readFile() throws IOException {
FileReader file = new FileReader("test.txt");
}
}Фрагмент 2:
import java.io.*;
class Test2 {
void readFile() {
FileReader file = new FileReader("test.txt");
}
}Фрагмент 3:
import java.io.*;
class Test3 {
void readFile() {
try {
FileReader file = new FileReader("test.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}Фрагмент 4:
import java.io.*;
class Test4 {
void readFile() throws IOException {
try {
FileReader file = new FileReader("test.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}4. Выбери нужные исключения в throws
В данном задании представлен фрагмент кода метода, который может бросать несколько проверяемых исключений. В сигнатуре метода пропущены исключения в throws. Используя выпадающие списки, выберите подходящие проверяемые исключения для каждого пропуска, ориентируясь на комментарии в коде. Обратите внимание, что непроверяемые исключения (наследники RuntimeException) в throws указывать необязательно, поэтому они не должны быть выбраны.
public void process() throws input1S, // для работы с файлом
input2S, // для работы с базой данных
input3S, // для разбора даты
input4S { // для загрузки класса
// ...
}5. Собери сигнатуру метода
Из предложенных строк соберите корректную сигнатуру метода на Java. Метод должен быть публичным, статическим, не возвращать значение (void), принимать один параметр типа String, и объявлять проброс двух исключений: FileNotFoundException и IOException. Две строки являются лишними и не должны входить в решение. Обратите внимание, что порядок исключений в throws должен быть именно таким: сначала FileNotFoundException, затем IOException.
public static voidreadFile(String path)throws FileNotFoundException, IOExceptionprivate voidthrows Exception6. Какой минимальный throws нужен
В приведённом фрагменте кода Java объявлен метод, который может выбросить несколько типов исключений. Ваша задача — определить минимальный корректный список исключений, который должен быть указан в предложении throws объявления этого метода. Список должен содержать только те типы исключений, которые метод потенциально может выбросить, и должен быть записан через запятую. Введите этот список в поле ответа.
public void processFile(String path) {
if (path == null) {
throw new NullPointerException("Path cannot be null");
}
if (!path.endsWith(".txt")) {
throw new IllegalArgumentException("File must be a .txt file");
}
// ... some file processing logic that may throw IOException
throw new java.io.IOException("File not found");
}7. Отметь все checked исключения
Перед вами фрагмент кода на Java, содержащий несколько операторов `throw new`. Внимательно изучите каждый из них. Ваша задача — отметить только те исключения, которые являются checked-исключениями (требуют обработки через try-catch или объявления в throws). Не отмечайте unchecked-исключения (RuntimeException и его подклассы).
public void processFile(String path) throws IOException {
if (path == null) {
{{throw new IllegalArgumentException("Path cannot be null");~|~t1}}
}
File file = new File(path);
if (!file.exists()) {
{{throw new FileNotFoundException("File not found: " + path);~|~t2}}
}
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
// чтение файла
} catch (IOException e) {
{{throw new IOException("Error reading file", e);~|~t3}}
}
if (file.length() == 0) {
{{throw new RuntimeException("File is empty");~|~t4}}
}
try {
parseContent(file);
} catch (ParseException e) {
{{throw new ParseException(e.getMessage(), e.getErrorOffset());~|~t5}}
}
if (isInvalidFormat(file)) {
{{throw new IllegalArgumentException("Invalid file format");~|~t6}}
}
try {
validateData(file);
} catch (SQLException e) {
{{throw new SQLException("Database error", e);~|~t7}}
}
if (isTooLarge(file)) {
{{throw new IllegalStateException("File too large");~|~t8}}
}
}