Java throw и throws Ключевые слова

В обработке исключений Java ключевое слово throw используется для явного выбрасывания исключения из метода или конструктора. А ключевое слово throws используется для объявления списка исключений, которые могут быть выброшены этим методом или конструктором.

1. Бросить

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

1.1 Синтаксис

Чтобы выдать исключение из метода или конструктора, используйте ключевое слово throw вместе с экземпляром класса исключения.

public void method() {//an unexpected event occuredthrow new CustomException("message");}

1.2 Обработка проверенных и непроверенных исключений

Если мы выбрасываем непроверенное исключение из метода, не обязательно обрабатывать исключение или объявлять его в предложении throws. Например, NullPointerException — это непроверенное исключение.

 публичный класс JavaExample {public static void main(String[] args) {метод();}публичный статический метод void() {выдать новое исключение NullPointerException();}}

Но если мы бросаем проверяемое исключение с помощью оператора throw, мы ДОЛЖНЫ либо обработать исключение в блоке catch, либо метод должен явно объявить его с помощью объявления throws. Например, FileNotFoundException — это проверяемое исключение.

 публичный класс JavaExample {public static void main(String[] args) {пытаться {метод();} поймать(FileNotFoundException e) {e.printStackTrace();}}Метод public static void() выдает FileNotFoundException {выдать новое исключение FileNotFoundException();}}

В Java каждый подкласс Error и RuntimeException является непроверяемым исключением. Проверяемое исключение — это все остальное под классом Throwable.

1.3 Распространение исключений

Исключение распространяется от метода к методу, вверх по стеку вызовов, пока не будет поймано. Так что если a() вызывает b(), который вызывает c(), который вызывает d(), и если d() выдает исключение, исключение будет распространяться от d к c, к b, к a, если только один из этих методов не поймает исключение.

Поиск обработчика исключений начинается с метода, в котором произошла ошибка, и продолжается по стеку вызовов в порядке, обратном порядку вызова методов, как описано выше.

Когда найден подходящий обработчик( блок catch ), система выполнения передает исключение обработчику. Если обработчик исключений не найден, то исключение достигает обработчика исключений JVM по умолчанию, который выводит подробности исключения в журналы и завершает приложение.

2. Броски

Ключевое слово throws в Java используется для объявления списка исключений, которые могут возникнуть во время выполнения метода.

2.1 Синтаксис

Чтобы объявить список исключений, используйте ключевое слово throws вместе с именами классов исключений.

public static void method( ) throws FileNotFoundException, ConnectionException {//code}

2.2. Разрешено вызывать проверенные и непроверенные исключения

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

 публичный класс JavaExample {public static void main(String[] args) {пытаться {//Можно пропустить обработку NullPointerException(непроверенное исключение)метод();} поймать(FileNotFoundException e) {e.printStackTrace();}}Метод public static void() выдает NullPointerException, FileNotFoundException {//код}}

3. Разница между throw и throws в Java

  • Ключевое слово throw используется для явного выбрасывания одного исключения из любого метода или конструктора, в то время как ключевое слово throws используется в объявлении метода и конструктора, обозначая, какое исключение может быть выброшено этим методом.
  • за throw следует экземпляр класса исключения, а за throws следует имя класса исключения.
  • throw используется внутри метода и конструктора, тогда как throws используется с сигнатурой метода и конструктора.
  • Мы можем выбрасывать только отдельные исключения с помощью throw, но мы можем объявлять несколько исключений с помощью throws, одно из которых может выбрасываться или не выбрасываться методом.
  • Проверенное исключение передается вызывающему методу, тогда как непроверенные исключения не передаются и, таким образом, могут не требовать явной обработки исключений.
  • Используя ключевое слово throw, мы также можем прервать оператор switch или цикл без использования ключевого слова break, что невозможно сделать с помощью throw.
Прокрутить вверх