Java бросает и бросает
Java бросает и бросает
В этом руководстве мы научимся использовать ключевые слова throw и throws для обработки исключений с помощью примеров.
В Java исключения можно разделить на два типа:
- Неотмеченные исключения: Они проверяются не во время компиляции, а во время выполнения. Например:
ArithmeticException
,NullPointerException
,ArrayIndexOutOfBoundsException
, исключения в разделеError
класс и т. д. - Проверенные исключения: Они проверяются во время компиляции. Например,
IOException
,InterruptedException
и т. д.
Обратитесь к Исключениям Java, чтобы узнать подробнее о проверенных и непроверенных исключениях.
Обычно нам не нужно обрабатывать непроверенные исключения. Это потому, что непроверенные исключения возникают из-за ошибок программирования. И рекомендуется исправлять их, а не обрабатывать.
В этом руководстве основное внимание будет уделено тому, как обрабатывать проверенные исключения с помощью throw
. и throws
.
Ключевое слово Java throws
Мы используем throws
ключевое слово в объявлении метода, чтобы объявить тип исключений, которые могут возникнуть в нем.
Его синтаксис:
accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
// code
}
Как видно из приведенного выше синтаксиса, мы можем использовать throws
для объявления нескольких исключений.
Пример 1:Java бросает ключевое слово
import java.io.*;
class Main {
public static void findFile() throws IOException {
// code that may produce IOException
File newFile=new File("test.txt");
FileInputStream stream=new FileInputStream(newFile);
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e){
System.out.println(e);
}
}
}
Вывод
java.io.FileNotFoundException: test.txt (No such file or directory)
Когда мы запускаем эту программу, если файл test.txt
не существует, FileInputStream
выдает FileNotFoundException
который расширяет IOException
класс.
Если метод не обрабатывает исключения, тип исключений, которые могут возникнуть в нем, должен быть указан в теге throws
. предложение, чтобы методы, расположенные дальше в стеке вызовов, могли их обрабатывать или указывать с помощью throws
сами ключевые слова.
findFile()
метод указывает, что IOException
можно кинуть. main()
метод вызывает этот метод и обрабатывает исключение, если оно возникло.
Вызов нескольких исключений
Вот как мы можем генерировать несколько исключений, используя throws
ключевое слово.
import java.io.*;
class Main {
public static void findFile() throws NullPointerException, IOException, InvalidClassException {
// code that may produce NullPointerException
… … …
// code that may produce IOException
… … …
// code that may produce InvalidClassException
… … …
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e1){
System.out.println(e1.getMessage());
} catch(InvalidClassException e2){
System.out.println(e2.getMessage());
}
}
}
Здесь findFile()
метод указывает, что он может выдать NullPointerException
, IOException
и InvalidClassException
в его throws
пункт.
Обратите внимание, что мы не обрабатывали NullPointerException
. Это потому, что это непроверенное исключение. Его не обязательно указывать в throws
предложение и обработайте его.
выдает ключевое слово Vs. попробуй... поймай... наконец
Может быть несколько методов, которые могут вызывать исключения. Написание try...catch
для каждого метода будет утомительным, а код станет длинным и менее читаемым.
throws
также полезно, когда вы проверили исключение (исключение, которое необходимо обработать), которое вы не хотите перехватывать в своем текущем методе.
Ключевое слово бросания Java
throw
ключевое слово используется для явного создания одного исключения.
При возникновении исключения поток выполнения программы переходит из try
блокировать на catch
блокировать. Мы используем throw
ключевое слово в методе.
Его синтаксис:
throw throwableObject;
Выбрасываемый объект — это экземпляр класса Throwable
. или подкласс Throwable
класс.
Пример 2. Ключевое слово throw в Java
class Main {
public static void divideByZero() {
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
}
Вывод
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0 at Main.divideByZero(Main.java:3) at Main.main(Main.java:7) exit status 1
В этом примере мы явно выбрасываем ArithmeticException.
Примечание. ArithmeticException
является непроверенным исключением. Обычно нет необходимости обрабатывать непроверенные исключения.
Пример 3. Генерация проверенного исключения
import java.io.*;
class Main {
public static void findFile() throws IOException {
throw new IOException("File not found");
}
public static void main(String[] args) {
try {
findFile();
System.out.println("Rest of code in try block");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Вывод
File not found
findFile()
метод выдает IOException
с сообщением, которое мы передали его конструктору.
Обратите внимание, что поскольку это проверенное исключение, мы должны указать его в throws
пункт.
Методы, вызывающие этот findFile()
необходимо либо обработать это исключение, либо указать его с помощью throws
сами ключевые слова.
Мы обработали это исключение в main
()
метод. Поток выполнения программы переходит из try
заблокировать до catch
блокировать при возникновении исключения. Итак, остальная часть кода в try
блок пропускается и операторы в catch
блок выполняется.
java
- Переменные и литералы Java
- Базовый ввод и вывод Java
- Java-выражения, операторы и блоки
- Java-класс и объекты
- Абстрактный класс Java и абстрактные методы
- Вложенный и внутренний класс Java
- Java перехватывает несколько исключений
- Автоупаковка и распаковка Java
- Java String replace(), replaceAll() и replaceFirst()
- Методы строки Java toLowercase() и toUpperCase()