Diferența dintre aruncare și aruncare în Java

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 15 Mai 2024
Anonim
Diferența dintre aruncare și aruncare în Java - Tehnologie
Diferența dintre aruncare și aruncare în Java - Tehnologie

Conţinut


Aruncările și aruncările sunt cuvintele cheie utilizate în gestionarea excepțiilor. arunca Cuvântul cheie este utilizat pentru a transfera manual instanța excepției create de programator în JVM. aruncă cuvântul cheie utilizat pentru predarea responsabilității de gestionare a excepției a apărut în metodă la metoda apelantului. Diferența de bază între aruncare și aruncare este că cuvântul cheie aruncă folosește obiectul excepție, în timp ce cuvântul cheie throws folosește numele claselor de excepție.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Bazele comparațieiaruncaaruncă
De bazăCuvantul cheie de aruncare transferă manual obiectul nostru de excepție creat în JVM manual.Cuvântul cheie aruncă este folosit pentru a delega responsabilitatea de gestionare a excepțiilor către apelantul metodei.
Sintaxăa arunca Instanța aruncată;return_type method_name (listă de parametri) aruncă ExceptionClass_list
{
// corpul metodei
}
Urmat deCuvântul cheie de aruncare este urmat de obiectul de excepție.Cuvântul cheie aruncă este urmat de lista claselor de excepție care pot apărea în metodă.
Numărul de excepții aruncateCuvântul cheie aruncă poate arunca o singură instanță de excepție.Cuvântul cheie aruncă poate declara mai multe clase de excepție separate printr-o virgulă.


Definiția throw

Cuvântul cheie „arunca”Este utilizat pentru a preda manual instanța noastră de excepție creată către JVM (Java Virtual Machine) manual. Dacă „throw” nu este folosit pentru a arunca o instanță de excepție și apare excepția, atunci sistemul de rulare aruncă intern instanța de excepție către JVM și programul se încheie anormal. Forma generală a cuvântului cheie aruncă este:

arunca Throwable_instance;

Deasupra Throwable_instance trebuie să fie un obiect al clasei Throwable. Tipurile primitive cum ar fi int, float sau char și instanța de clasă care nu poate fi aruncată nu pot fi aruncate folosind cuvântul cheie throw.

Să luăm un exemplu pentru a înțelege aruncarea de cuvinte cheie.

Test de clasă {Public static void main (String args) {throw new ArithmeticException ("/ la zero"); }}

În codul de mai sus, aruncarea de cuvinte cheie aruncă o instanță a clasei de excepție „ArithmeticException”. Dacă cuvântul cheie aruncare nu ar fi fost utilizat atunci, metoda principală () ar fi creat intern un obiect de excepție predat JVM.


Punctele de reținut despre cuvântul cheie aruncă:

  • Înmânează manual obiectul de excepție în JVM.
  • Este cel mai bine utilizat pentru excepțiile definite de utilizator sau pentru excepțiile personalizate.
  • Dacă memoria nu este alocată obiectului de excepție aruncat de cuvântul cheie throw, atunci apare o excepție de rulare, NullPointerException.
  • Cuvântul cheie de aruncare oprește execuția programului imediat după apariția acestuia. nu putem scrie direct nicio declarație după declarația de aruncare. Dacă scriem orice post direct după declarația de aruncare, atunci compilatorul va afișa o declarație de eroare, de neatins în timpul compilării.
  • Doar obiectele clasei Throwable pot fi aruncate folosind cuvântul cheie throw. Dacă obiectul aruncat nu este un obiect al clasei Throwable, atunci vom primi o eroare de compilare „S-a găsit un tip incompatibil. . obligatoriu java.lang.Throwable ”

Notă:

Cuvântul cheie de aruncare este utilizat în C ++, JAVA, C #, pentru a arunca manual o excepție.

Definiția throws

aruncă„Cuvântul cheie” este utilizat pentru a delega responsabilitatea de gestionare a excepției apărute în metodă, pentru metoda apelantului. Metoda apelantului este responsabilă de gestionarea excepției, poate fi orice altă metodă sau JVM. Acesta declară lista claselor de excepție care pot apărea în metodă.

Utilizarea cuvântului cheie aruncă convinge compilatorul că excepția apărută în metodă trebuie să fie gestionată prin metoda apelantului, prin urmare, nu apare nicio eroare de compilare. Dar, metoda apelantului trebuie să se ocupe de excepție sau să delege responsabilitatea de a gestiona excepția în metoda ierarhiei sale. Când apare excepția de rulare, atunci chiar și după utilizarea cuvântului cheie throws, aceasta nu împiedică terminarea anormală a programului. Dacă metoda apelantului este principală (), JVM implicit gestionează excepția.

Forma generală a cuvântului cheie aruncă este:

return_type method_name (parametru-listă) aruncă exceptionClass_list {// corpul metodei}

Putem vedea că cuvântul cheie aruncă apare după semnarea metodei și poate conține lista claselor de excepție care pot apărea în metodă. Lista claselor de excepție scrise după aruncările de cuvinte cheie este separată de virgulă.

Să luăm un exemplu pentru a înțelege cuvântul cheie aruncă.

calss Test {public static void main (String args) aruncă InterruptException {sleep sleep (10000); }}

În codul de mai sus, firul principal este realizat pentru a dormi o perioadă de timp folosind metoda sleep (). Acum, când metoda principală este în repaus, este posibil ca celelalte fire să întrerupă firul principal. Dar, cuvântul cheie aruncă este folosit după semnarea metodei principale (), astfel încât programul să se compileze cu ușurință. Cuvântul cheie throws declară clasa de excepție bifată InterruptException. Acum, dacă orice alt thread întrerupe firul principal în timpul rulării, cuvântul cheie aruncă ar transfera acea excepție apelantului metodei principale (), care este JVM. JVM va încheia programul anormal.

Punctele de reținut despre cuvântul cheie aruncă:

  • Cuvântul cheie aruncă este folosit doar pentru declararea claselor de excepție verificate. Utilizarea cuvântului cheie aruncă pentru o excepție marcată nu are impact.
  • Dacă metoda nu dorește să gestioneze singură excepția, ea delegă această excepție în metoda apelantului din acea clasă folosind cuvântul cheie throws.
  • Utilizarea sa permite doar o compilare lină a programului.
  • Dacă apare o excepție la runtime, programul se încheie anormal, chiar și după utilizarea cuvântului cheie throws.
  • Se recomandă utilizarea blocului try / catch pentru încheierea normală a programului dacă apare o excepție la timpul de execuție.

Notă:

Aruncările de cuvinte cheie utilizate numai în Java. C ++ și C # nu folosesc cuvântul cheie throws.

  1. Aruncarea de cuvinte cheie, transferă responsabilitatea de gestionare a excepțiilor către JVM manual, în timp ce, cuvântul cheie aruncă, transferă responsabilitatea de gestionare a excepțiilor către metoda apelantă a codului unde a avut loc o excepție.
  2. Cuvântul cheie de aruncare este urmat de obiectul de excepție pe care îl predă JVM. Pe de altă parte, aruncarea cuvântului cheie este urmată de clasele de excepție care pot apărea în metodă.
  3. Cuvântul cheie aruncă poate arunca un singur obiect de excepție la un moment dat, în timp ce, cuvântul cheie aruncă poate declara mai multe clase de excepție separate de virgulă la un moment dat.

Concluzie:

Cuvântul cheie de aruncare este cel mai bine utilizat pentru excepția personalizată. Blocul try / catch este cel mai bun pentru gestionarea excepțiilor, comparativ cu cuvintele cheie aruncate.