Домой Учебники по Java и J2EE Какая разница между броском против бросает в Java

Какая разница между броском против бросает в Java

897
0

Один заявляет об этом, а другой —

Есть пять ключевых слов, связанных с обработкой исключений в Java, например, try, catch, finally, throw и throws . Помимо различий между final, finally и finalize , throw vs throws является одним из часто задаваемых вопросов об интервью на Java .

  • Ключевое слово throw используется для выброса Exception из любого метода или статического блока в Java, в то время как ключевое слово throw, используемое в объявлении метода, указывает, какое исключение может быть выброшено этим методом. Они не являются взаимозаменяемыми.
  • Если какой-либо метод выбрасывает флажок Exception, как показано в примере ниже, вызывающая сторона может либо обработать это исключение , перехватив его, либо повторно вызвать его, объявив другое предложение throws в объявлении метода.
  • Предложение Throw можно использовать в любой части кода, где, по вашему мнению, в вызывающий метод необходимо добавить конкретное исключение.

Подчеркивая исключения Java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Java. яз. объект
   |
   + — Java . яз. Throwable
         |
         + — Java . яз. исключение
         |      |
         |      + — Java . яз. ClassNotFoundException
         |      |
         |      + — Java . Ио. IOException
         |      |      |
         |      |      + — Java . Ио. FileNotFoundException
         |      |
         |      + — Java . яз. RuntimeException
         |            |
         |            + — Java . яз. Исключение нулевого указателя
         |            |
         |            + — Java . яз. IndexOutOfBoundsException
         |                  |
         |                  + — Java . яз. ArrayIndexOutOfBoundsException
         |
         + — Java . яз. ошибка
               |
               + — Java . яз. VirtualMachineError
                     |
                     + — Java . яз. OutOfMemoryError

Если метод генерирует исключение, он должен быть либо окружен блоком try catch, чтобы перехватить его, либо этот метод должен иметь предложение throws в своей сигнатуре. Без предложения throws в сигнатуре компилятор Java JVM не знает, что делать с исключением. Предложение throws сообщает компилятору, что это конкретное исключение будет обработано вызывающим методом.

Ниже приведен очень простой пример, который объясняет поведение блоков Throw, Throws, Try, Catch, finally в Java.

CrunchifyThrowThrows.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
пакет ком . crunchify. учебные пособия ;
Импортировать Java. Ио. FileInputStream ;
Импортировать Java. Ио. FileNotFoundException ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyThrowThrows {
@SuppressWarnings ( «не используется» )
общественности статический недействительным главная ( Строка args [ ] ) бросает исключение {
FileInputStream crunchifyStream1 знак равно ноль ;
FileInputStream crunchifyStream2 знак равно ноль ;
строка имя файла знак равно Crunchify.txt ;
Система. вне. println ( main: Starting + CrunchifyThrowThrows . класс. getName ( ) + с именем файла = + fileName ) ;
// получаем поток ввода файла 1
пытаться {
crunchifyStream1 знак равно crunchifyTest1 ( fileName ) ;
} ловить ( FileNotFoundException ex ) {
Система. вне. println ( main: Oops, FileNotFoundException перехвачено ) ;
} ловить ( Исключение экс ) {
Система. вне. println ( main: Oops, genreal исключения обнаружены ) ;
}
// получаем поток ввода файла 2
crunchifyStream2 знак равно crunchifyTest2 ( fileName ) ;
Система. вне. println ( main: + CrunchifyThrowThrows . класс. getName ( ) + закончилась ) ;
}
общественности статический FileInputStream crunchifyTest1 ( String fileName ) бросает FileNotFoundException {
FileInputStream crunchifyStream знак равно новый FileInputStream ( fileName ) ;
Система. вне. println ( crunchifyTest1: поток ввода файла создан ) ;
вернуть crunchifyStream ;
}
общественности статический FileInputStream crunchifyTest2 ( String fileName ) бросает исключение {
FileInputStream crunchifyStream знак равно ноль ;
пытаться {
crunchifyStream знак равно новый FileInputStream ( fileName ) ;
} ловить ( FileNotFoundException ex ) {
бросать новый Исключение ( crunchifyTest2: К сожалению, FileNotFoundException перехвачено ) ;
//System.out.println(crunchifyTest2: К сожалению, исключение FileNotFoundException );
} в конце концов {
Система. вне. println ( crunchifyTest2: finally block ) ;
}
Система. вне. println ( crunchifyTest2: возвращение из crunchifyTest2 ) ;
вернуть crunchifyStream ;
}
}

Результат:

Результат

1
2
3
4
5
6
главная : Начиная ком . crunchify. учебники . CrunchifyThrowThrows с именем файла знак равно Crunchify. текст
главная : Ой , FileNotFoundException пойман
crunchifyTest2 : в конце концов блок
Исключение в нить главный Java. яз. Исключение : crunchifyTest2 : Ой , FileNotFoundException пойман
на ком . crunchify. учебники . CrunchifyThrowThrows . crunchifyTest2 ( CrunchifyThrowThrows . java : 45 )
на ком . crunchify. учебники . CrunchifyThrowThrows . main ( CrunchifyThrowThrows . java : 30 )

Теперь просто замените строки 45 и 46 на строку ниже, чтобы увидеть результат ниже:

Замените строки 45 и 46 этими …

1
2
// бросаем новое исключение (crunchifyTest2: Упс, FileNotFoundException перехватил);
Система. вне. println ( crunchifyTest2: К сожалению, FileNotFoundException перехвачено ) ;

Новый результат:

Результат2

1
2
3
4
5
6
главная : Начиная ком . crunchify. учебники . CrunchifyThrowThrows с именем файла знак равно Crunchify. текст
главная : Ой , FileNotFoundException пойман
crunchifyTest2 : Ой , FileNotFoundException пойман
crunchifyTest2 : в конце концов блок
crunchifyTest2 : Возвращаясь из crunchifyTest2
главная : ком . crunchify. учебники . CrunchifyThrowThrows закончилась

Список всех учебных пособий по Java, которые могут вас заинтересовать.

ЧИТАТЬ ТАКЖЕ:  Лучший способ преобразовать Примитивный Массив в Список в Java8 и Классическом toString (), Итератор

Бонусные советы по исключениям:

  • Нормальное выполнение программы сразу же разветвляется при возникновении исключения.
  • Проверенные исключения должны быть перехвачены или переданы. Это можно сделать с помощью оператора try… catch или путем определения исключения в определении метода.
  • Исключение перехватывается первым блоком перехвата , связанный класс исключений которого соответствует классу или суперклассу выданного исключения.
  • Если в цепочке исключений не найдено соответствующего блока catch , поток, содержащий выброшенное исключение, завершается.
  • Блок finally после оператора try… catch выполняется независимо от того, перехвачено исключение или нет.
  • Возврат в блоке finally разрывает цепочку исключений для вызывающего даже для неисследованных исключений.
Какая разница между броском против бросает в Java

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь