Diagramă de comparație
Bazele comparației | arunca | aruncă |
---|---|---|
De bază | Aruncarea cuvântului cheie duce manual obiectul creat de excepție la JVM. | Cuvântul cheie ars este folosit pentru a delega responsabilitatea de tratare a excepțiilor către apelantul metodei. |
Sintaxă | arunca instanță Throwable; | return_type method_name (lista de parametri) aruncă ExceptionClass_list { // corpul metodei } |
Urmat de | Cuvântul cheie aruncare este urmat de obiectul excepție. | Cuvântul cheie ars este urmat de lista claselor de excepție care pot apărea în metodă. |
Numărul de excepție aruncat | Cuvântul cheie aruncare poate arunca o singură instanță de excepție. | Cuvântul aruncat poate declara mai multe clase de excepție separate printr-o virgulă. |
Definiția throw
Cuvântul cheie " aruncă " este folosit pentru a transfera instanța excepției create către JVM (Java Virtual Machine) manual. Dacă "aruncarea" nu este folosită pentru a arunca o instanță de excepție și excepția apare, atunci sistemul de execuție aruncă intern instanța de excepție în JVM și programul se termină anormal. Forma generală a cuvântului cheie aruncare este:
arunca Throwable_instance;
Deasupra elementului Throwable_instance trebuie să fie un obiect al clasei Throwable. Tipurile primitive, cum ar fi int, float, 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 cuvântului cheie.
Test de clasă {Public static void principal (String [] args) {aruncă noua ArithmeticException ("/ de zero"); }}
În codul de mai sus, aruncarea cuvântului cheie aruncă o instanță a clasei de excepție "ArithmeticException". Dacă nu ar fi fost folosit cuvântul cheie aruncată, metoda principală () ar fi creat intern un obiect de excepție predat către JVM.
Punctele de reținut despre aruncarea cuvintelor cheie:
- Trimite manual obiectul de excepție către JVM.
- Este cel mai bine folosit pentru excepțiile definite de utilizator sau excepțiile personalizate.
- Dacă memoria nu este alocată obiectului excepțional aruncat prin aruncarea cuvântului cheie, atunci apare o excepție de rulare, NullPointerException.
- Cuvântul aruncat oprește executarea programului imediat după apariția lui. nu putem scrie direct nicio declarație după declarația de aruncare. Dacă vom scrie orice mesaj direct după declarația de aruncare, atunci compilatorul va afișa o eroare, o declarație inaccesibilă în timpul compilării.
- Numai obiectele din clasa Throwable pot fi aruncate folosind cuvântul cheie throw. Dacă obiectul aruncat nu este un obiect de clasă Throwable, atunci primim o eroare de timp de compilare "Tipul incompatibil găsit. . necesare java.lang.Throwable "
Notă:
Aruncarea cuvântului cheie este folosită în C ++, JAVA, C #, pentru a arunca manual o excepție.
Definiția throws
Cuvântul cheie " aruncă " este utilizat pentru a delega responsabilitatea de a manipula excepția care apare în metodă, la metoda apelantului. Metoda apelantului este responsabilă de tratarea excepției, poate fi orice altă metodă sau JVM. Declară lista claselor de excepție care pot apărea în metodă.
Utilizarea cuvântului cheie aruncă convinge compilatorul că excepția a apărut în metodă trebuie să fie tratată de metoda apelantului, prin urmare, nu apare o eroare de compilare. Dar metoda apelantului trebuie să se ocupe de excepție sau să delege responsabilitatea de a gestiona excepția de la metoda sa de ierarhie. Când se produce excepția runtime, atunci chiar și după utilizarea cuvintelor cheie aruncate, aceasta nu împiedică terminarea anormală a programului. Dacă metoda apelantului este principală (), JVM implicit execută excepția.
Forma generală a cuvântului cheie aruncă este:
return_type method_name (lista de parametri) aruncă exceptionClass_list {// body of method}
Putem vedea că cuvântul cheie throws apare după semnarea metodei și poate conține lista claselor de excepție care pot apărea în metodă. Lista claselor excepționale scrise după aruncarea cuvintelor cheie este separată de virgulă.
Să luăm un exemplu pentru a înțelege cuvântul cheie aruncat.
calss Test {public static void principal (String [] args) aruncă InterruptedException {thread sleep (10000); }}
În codul de mai sus, firul principal este adormit pentru o perioadă de timp folosind metoda sleep (). Acum, când metoda principală este la culcare, este posibil ca celelalte fire să întrerupă firul principal. Dar, cuvântul cheie throws este utilizat în după semnătura metodei principale () astfel încât programul să se compileze cu ușurință. Cuvântul aruncat declară clasa excepțională verificată InterruptedException. Acum, dacă orice alt fir întrerupe firul principal în timpul execuției, cuvântul cheie throws ar preda acea excepție apelantului metodei principale (), care este JVM. JVM ar anula programul anormal.
Punctele de reținut despre aruncarea cuvântului cheie:
- Cuvântul de cuvinte aruncat se folosește numai pentru declararea claselor excepționale verificate. Utilizarea cuvântului cheie aruncat pentru o excepție neconfirmată nu are nici un impact.
- Dacă metoda nu dorește să se ocupe de excepția pe cont propriu, ea delegă acea excepție la metoda apelantului acelei clase utilizând cuvântul cheie aruncat.
- Utilizarea sa permite compilarea fără probleme a programului.
- Dacă se produce o excepție la timpul de execuție, programul se termină anormal, chiar și după utilizarea cuvântului cheie aruncat.
- Se recomandă utilizarea blocului try / catch pentru terminarea normală a programului dacă se produce o excepție în timpul rulării.
Notă:
Cuvântul cheie aruncă folosit numai în Java. C ++ și C # nu utilizează cuvântul cheie aruncat.
Diferentele cheie dintre aruncare si aruncare
- Cuvântul cheie aruncă, transferă manual responsabilitatea gestionării excepțiilor către JVM, în timp ce cuvântul cheie aruncă, transmite responsabilitatea de tratare a excepțiilor la metoda apelantului a codului în care a apărut o excepție.
- Cuvântul cheie aruncare este urmat de obiectul de excepție pe care îl predă JVM. Pe de altă parte, cuvântul cheie aruncat este urmat de clasele de excepție care pot apărea în metodă.
- Cuvântul de aruncare poate arunca un singur obiect excepțional la un moment dat, în timp ce cuvântul cheie throws poate declara mai multe clase de excepție separate printr-o virgulă în același timp.
Concluzie:
Cuvântul cheie aruncare este cel mai bine utilizat pentru excepția personalizată. Blocul try / catch este cel mai bun pentru manipularea excepțiilor în comparație cu aruncarea cuvântului cheie.