Forskellen mellem kast og kast i Java

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 10 Kan 2024
Anonim
Java Multithreading : AtomicReference, ScheduledExecutorService и монада Either. Многопоточность.
Video.: Java Multithreading : AtomicReference, ScheduledExecutorService и монада Either. Многопоточность.

Indhold


Kast og kast er de nøgleord, der bruges i undtagelseshåndtering. Det kaste nøgleord bruges til at overlevere forekomsten af ​​undtagelsen oprettet af programmereren til JVM manuelt. Det kaster nøgleord brugt til at overdrage ansvaret for at håndtere undtagelsen forekom i metoden til opkaldsmetoden. Den grundlæggende forskel mellem kast og kast er, at kast-nøgleordet bruger undtagelsesobjektet, mens kast-nøgleordet bruger navnet på undtagelsesklasser.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningkastekaster
GrundlæggendeKast nøgleordet overleverer vores oprettede undtagelsesobjekt manuelt til JVM.Throws-nøgleordet bruges til at delegere ansvaret for undtagelseshåndtering til den, der ringer til metoden.
Syntakskaste Throwable-instans;return_type method_name (parameter-liste) kaster ExceptionClass_list
{
// krop af metode
}
Efterfulgt afKastnøgleordet efterfølges af undtagelsesobjekt.Kastens nøgleord følges af listen over de undtagelsesklasser, der kan forekomme i metoden.
Antal undtagelser kastetKastnøgleordet kan kaste en enkelt undtagelsesinstans.Throws nøgleordet kan erklære flere undtagelsesklasser adskilt af et komma.


Definition af kast

Nøgleordet "kaste”Bruges til at udlevere vores oprettede undtagelsesforekomst manuelt til JVM (Java Virtual Machine). Hvis “kast” ikke bruges til at kaste en undtagelsesinstans, og undtagelsen opstår, kaster runtime-systemet internt undtagelsesinstansen til JVM, og programmet afsluttes unormalt. Den generelle form for kast-nøgleordet er:

kaste Throwable_instance;

Over Throwable_instance skal være et objekt i klassen Throwable. Primitive typer som int, float eller char og den ikke-kastbare klasseinstans kan ikke kastes ved hjælp af throw key.

Lad os tage et eksempel for at forstå nøgleordet kast.

Klassetest {Public static void main (String args) {throw new ArithmeticException ("/ ved nul"); }}

I ovenstående kode kaster nøgleordet throw et eksempel på undtagelsesklassen “ArithmeticException”. Hvis kast-nøgleordet ikke var blevet brugt, ville hovedmetoden () internt have oprettet et undtagelsesobjekt overdraget til JVM.


De punkter, du skal huske på nøgleordet kast:

  • Det overleverer undtagelsesobjektet manuelt til JVM.
  • Det bruges bedst til de brugerdefinerede undtagelser eller tilpassede undtagelser.
  • Hvis hukommelsen ikke er allokeret til undtagelsesobjektet, der er kastet med et kast-nøgleord, forekommer der en runtime-undtagelse, NullPointerException.
  • Kastnøgleordet stopper udførelsen af ​​programmet umiddelbart efter det forekommer. vi kan ikke direkte skrive nogen erklæring efter udsagnserklæringen. Hvis vi skriver en station direkte efter kast-erklæring, viser kompilatoren en fejl, ikke tilgængelig erklæring under kompilering.
  • Kun genstande, der kan kastes, kan kastes ved hjælp af et søgeord. Hvis det kastede objekt ikke er et objekt i klassen, der kan kastes, får vi en kompileringstidsfejl “Inkompatibel type fundet. . krævet java.lang.Trowable ”

Bemærk:

Kastnøgleordet bruges i C ++, JAVA, C #, til manuelt at kaste en undtagelse.

Definition af kast

Det "kaster”Nøgleord bruges til at delegere ansvaret for at håndtere undtagelsen, der forekom i metoden, til dens opkaldsmetode. Opkaldsmetoden er ansvarlig for at håndtere undtagelsen, det kan være enhver anden metode eller JVM. Den erklærer listen over de undtagelsesklasser, der kan forekomme i metoden.

Brug af kast-nøgleordet overbeviser compileren om, at undtagelsen forekom i metoden skal håndteres af den opkaldsmetode, og der opstår derfor ingen kompilationsfejl. Men opkaldsmetoden skal håndtere undtagelsen eller delegere ansvaret for at håndtere undtagelsen til dens hierarkimetode. Når runtime-undtagelsen finder sted, forhindrer det ikke selv efter brugen af ​​throws-nøgleordet den unormale afslutning af programmet. Hvis opkaldsmetoden er main (), håndterer JVM som standard undtagelsen.

Den generelle form for kasternøgleordet er:

return_type method_name (parameter-liste) kaster exceptionClass_list {// body of method}

Vi kan se, at kaste-nøgleord vises efter metodens underskrift, og det kan indeholde listen over undtagelsesklasser, der kan forekomme i metoden. Listen over undtagelsesklasser, der er skrevet efter nøgleordet kast, adskilles af komma.

Lad os tage et eksempel for at forstå kast-nøgleordet.

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

I ovenstående kode får hovedtråden til at sove i nogen tid ved hjælp af metoden sleep (). Når hovedmetoden nu er i dvale, er det muligt, at de andre tråde kan afbryde hovedtråden. Men kast-nøgleordet bruges i efter underskrivelsen af ​​main () -metoden, så programmet ville nemt samles. Kastens nøgleord erklærer den kontrollerede undtagelsesklasse InterruptException. Hvis en anden tråd nu afbryder hovedtråden under kørsel, ville kastet-nøgleordet overdrage denne undtagelse til den, der ringer til main () -metoden, som er JVM. JVM afslutter programmet unormalt.

De punkter, du skal huske på, kaster nøgleord:

  • Throws-nøgleordet bruges kun til at erklære de markerede undtagelsesklasser. Brug af kast-nøgleordet til en ikke-markeret undtagelse har ingen indflydelse.
  • Hvis metoden ikke ønsker at håndtere undtagelsen på egen hånd, delegerer den undtagelsen til opkaldsmetoden i den klasse ved hjælp af throwsøgeordet.
  • Dets brug tillader kun jævn kompilering af programmet.
  • Hvis en undtagelse forekommer ved kørsel, afsluttes programmet unormalt, også efter brugen af ​​kast-nøgleordet.
  • Det anbefales at bruge try / catch-blok til normal afslutning af programmet, hvis der sker en undtagelse under kørsel.

Bemærk:

Nøgleordet kast bruges kun i Java. C ++ og C # bruger ikke kast-nøgleordet.

  1. Nøgleordet kaster, overleverer ansvaret for undtagelseshåndtering til JVM manuelt, mens nøgleordet kaster, overleverer ansvaret for undtagelseshåndtering til opkaldsmetoden for den kode, hvor en undtagelse har fundet sted.
  2. Kastnøgleordet efterfølges af det undtagelsesobjekt, det overleverer til JVM. På den anden side følges kast-nøgleord af de undtagelsesklasser, der kan forekomme i metoden.
  3. Kastnøgleordet kan kaste et enkelt undtagelsesobjekt ad gangen, hvorimod kasternøgleordet kan erklære flere undtagelsesklasser adskilt af et komma ad gangen.

Konklusion:

Kastnøgleordet bruges bedst til den tilpassede undtagelse. Try / catch-blokken er bedst til at håndtere undtagelser i forhold til nøgleord med kaster.