Рекомендуем, 2020

Выбор редакции

Разница между бросками и бросками в Java

Броски и броски - это ключевые слова, используемые при обработке исключений. Ключевое слово throw используется для передачи экземпляра исключения, созданного программистом, в JVM вручную. Ключевое слово throws, используемое для передачи ответственности за обработку исключения, возникшего в методе, методу вызывающей стороны. Основное различие между throw и throws состоит в том, что ключевое слово throw использует объект исключения, тогда как ключевое слово throws использует имя классов исключения.

Сравнительная таблица

Основа сравнениябросатьбросает
основнойКлючевое слово throw передает вручную созданный объект исключения в JVM.Ключевое слово throws используется для делегирования ответственности за обработку исключений вызывающей стороне метода.
Синтаксисбросить Throwable-экземпляр;return_type метод_name (список параметров) выдает ExceptionClass_list
{
// тело метода
}
С последующимЗа ключевым словом throw следует объект исключения.Ключевое слово throws сопровождается списком классов исключений, которые могут встречаться в методе.
Количество брошенных исключенийКлючевое слово throw может генерировать единственный экземпляр исключения.Ключевое слово throws может объявлять несколько классов исключений через запятую.

Определение броска

Ключевое слово « throw » используется для ручной передачи созданного нами экземпляра исключения в JVM (виртуальную машину Java). Если «throw» не используется для выброса экземпляра исключения и возникает исключение, тогда среда выполнения внутренне выбрасывает экземпляр исключения в JVM, и программа аварийно завершает работу. Общая форма ключевого слова throw:

 бросить Throwable_instance; 

Выше Throwable_instance должен быть объект класса Throwable. Примитивные типы, такие как int, float или char, и экземпляр класса, не подлежащий перебрасыванию, не могут быть выброшены с использованием ключевого слова throw.

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

 Class Test {Public static void main (String [] args) {throw new ArithmeticException ("/ by zero"); }} 

В приведенном выше коде ключевое слово throw создает экземпляр класса Exception «ArithmeticException». Если бы ключевое слово throw не использовалось тогда, метод main () внутренне создал бы объект исключения, переданный JVM.

Точки, которые нужно помнить о ключевом слове throw:

  • Он вручную передает объект исключения в JVM.
  • Лучше всего использовать для пользовательских или пользовательских исключений.
  • Если память не выделена объекту исключения, выданному с помощью ключевого слова throw, возникает исключение времени выполнения, NullPointerException.
  • Ключевое слово throw останавливает выполнение программы сразу после ее появления. мы не можем напрямую написать какое-либо утверждение после оператора throw. Если мы напишем какое-либо выражение непосредственно после оператора throw, тогда компилятор покажет ошибку, недостижимую инструкцию во время компиляции.
  • Только объекты класса Throwable могут быть выброшены с помощью ключевого слова throw. Если брошенный объект не является объектом класса Throwable, мы получаем ошибку времени компиляции «Обнаружен несовместимый тип., требуется java.lang.Throwable »

Замечания:

Ключевое слово throw используется в C ++, JAVA, C #, чтобы вручную генерировать исключение.

Определение бросков

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

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

Общая форма ключевого слова throws:

 return_type имя-метода (список параметров) генерирует список_исключений {// тело метода} 

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

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

 calss Test {public static void main (String [] args) выдает InterruptedException {thread sleep (10000); }} 

В приведенном выше коде основной поток переводится в спящий режим на некоторое время с использованием метода sleep (). Теперь, когда основной метод находится в спящем режиме, возможно, что другие потоки могут прервать основной поток. Но ключевое слово throws используется после сигнатуры метода main (), поэтому программа легко компилируется. Ключевое слово throws объявляет проверенный класс исключений InterruptedException. Теперь, если какой-либо другой поток прерывает основной поток во время выполнения, ключевое слово throws передаст это исключение вызывающему методу main (), который является JVM. JVM прервет программу ненормально.

Точки, которые нужно помнить о ключевых словах throws:

  • Ключевое слово throws используется только для объявления проверенных классов исключений. Использование ключевого слова throws для непроверенного исключения не влияет.
  • Если метод не хочет обрабатывать исключение самостоятельно, он делегирует это исключение методу вызывающей стороны этого класса с помощью ключевого слова throws.
  • Его использование позволяет только плавную компиляцию программы.
  • Если во время выполнения возникает исключение, программа аварийно завершает работу даже после использования ключевого слова throws.
  • Рекомендуется использовать блок try / catch для нормального завершения программы, если во время выполнения возникает исключение.

Замечания:

Ключевое слово throws используется только в Java. C ++ и C # не используют ключевое слово throws.

Ключевые различия между бросками и бросками

  1. Ключевое слово throw передает ответственность за обработку исключений в JVM вручную, тогда как ключевое слово throw передает ответственность за обработку исключений методу вызывающего кода, где произошло исключение.
  2. За ключевым словом throw следует объект исключения, который он передает JVM. С другой стороны, за ключевым словом throws следуют классы исключений, которые могут встречаться в методе.
  3. Ключевое слово throw может одновременно генерировать один объект исключения, тогда как ключевое слово throw может объявлять несколько классов исключений, разделенных запятой за раз.

Заключение:

Ключевое слово throw лучше всего использовать для настраиваемого исключения. Блок try / catch лучше всего подходит для обработки исключений по сравнению с ключевым словом throws.

Top