Препоръчано, 2024

Избор На Редактора

Разлика между хвърлянето и хвърлянето в Java

Хвърлянето и хвърлянето са ключовите думи, използвани в обработката на изключения. Ключовата дума throw се използва за ръчно предаване на копието на изключението, създадено от програмиста на JVM. Ключовата дума throws, използвана за предаване на отговорността за обработване на изключението, възникна в метода към метода на повикващия. Основната разлика между хвърлянето и хвърлянето е, че ключовата дума throw използва обекта на изключение, докато ключовата дума throws използва името на класовете изключения.

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

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

Определение на хвърляне

Ключовата дума " хвърли " се използва за ръчно предаване на създадения случай на изключение на JVM (Java Virtual Machine). Ако "хвърля" не се използва за хвърляне на случай на изключение и възниква изключение, тогава системата на изпълнение вътрешно изхвърля случая на изключение в JVM и програмата се прекратява ненормално. Общата форма на ключовата дума throw е:

 хвърли Throwable_instance; 

Над Throwable_instance трябва да бъде обект от класа Throwable. Примитивните типове като int, float или char и неплъщаващият се клас клас не могат да бъдат хвърлени с ключова дума throw.

Нека вземем пример, за да разберем ключовата дума throw.

 Класов тест {Публичен статичен невалиден main (String [] args) {хвърли нов ArithmeticException ("/ by zero"); }} 

В горния код ключовата дума throw хвърля инстанция на класа Exception „ArithmeticException“. Ако ключовата дума throw не е била използвана тогава, методът main () би създал вътрешно един обект на изключение, предаден на JVM.

Точките, които трябва да се помнят за ключовата дума throw:

  • Той предава обекта на изключение ръчно на JVM.
  • Най-добре се използва за дефинираните от потребителя изключения или персонализирани изключения.
  • Ако паметта не е разпределена към обекта на изключението, хвърлен от ключовата дума throw, тогава възниква изключение по време на изпълнение, NullPointerException.
  • Ключовата дума throw се прекратява изпълнението на програмата веднага след нейното настъпване. не можем директно да напишем изявление след операцията на хвърляне. Ако ние напишем всяка стация директно след хвърлянето, тогава компилаторът ще покаже грешка, недостижим оператор по време на компилация.
  • Само обекти от класа Throwable могат да бъдат изхвърлени с помощта на ключова дума throw. Ако изхвърленият обект не е обект от клас Throwable, тогава получаваме грешка за времето за компилация „Несъвместим тип намерен., необходим java.lang.Throwable "

Забележка:

Ключовата дума throw се използва в C ++, JAVA, C #, за ръчно изхвърляне на изключение.

Дефиниция на хвърляния

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

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

Общата форма на ключовата дума "хвърляния" е:

 return_type method_name (списък на параметрите) хвърля изключениеClass_list {// маса на метода} 

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

Нека вземем един пример, за да разберем ключовата дума throws.

 calss Тест {публични статични невалидни main (String [] args) хвърля InterruptedException {низ сън (10000); }} 

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

Точките, които трябва да запомните за ключовата дума:

  • Ключовата дума throws се използва само за деклариране на проверените изключващи класове. Използването на ключовата дума throws за непроверено изключение няма въздействие.
  • Ако методът не иска самостоятелно да се справи с изключението, той делегира това изключение на метода на повикващия от този клас, като използва ключовата дума throws.
  • Използването му позволява само гладко компилиране на програмата.
  • Ако възникне изключение по време на изпълнение, програмата се прекратява необичайно, дори след използването на ключовата дума throws.
  • Препоръчително е да използвате блока try / catch за нормално прекратяване на програмата, ако възникне изключение по време на изпълнение.

Забележка:

Ключовата дума хвърля използвана само в Java. C ++ и C # не използват ключовата дума throws.

Ключови разлики между хвърляне и хвърляне

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

Заключение:

Ключовата дума throw е най-добре да се използва за персонализираното изключение. Блокът try / catch е най-подходящ за обработване на изключенията в сравнение с ключовата дума.

Top