Sammenligningstabel
Sammenligningsgrundlag | kaste | kaster |
---|---|---|
Grundlæggende | Kasteordet overfører vores skabte undtagelsesobjekt til JVM manuelt. | Kasteordet bruges til at delegere ansvaret for undtagelseshåndtering til den, der ringer til metoden. |
Syntaks | kaste Throwable-forekomst; | return_type method_name (parameter-liste) kaster ExceptionClass_list { // metode metode } |
Efterfulgt af | Kasteordet efterfølges af undtagelsesobjekt. | Kasteordet efterfølges af listen over undtagelsesklasser, der kan forekomme i metoden. |
Antal undtagelser kastet | Kasteordet kan kaste en enkelt undtagelsesinstans. | Kasteordet kan angive flere undtagelsesklasser adskilt af et komma. |
Definition af kaste
Søgeordet " throw " bruges til at overføre vores oprettede undtagelsesinstans til JVM (Java Virtual Machine) manuelt. Hvis "kaste" ikke bruges til at kaste en undtagelsesinstans, og undtagelsen forekommer, kaster køresystemet internt undtagelseseksemplet til JVM, og programmet afbrydes unormalt. Den generelle form for kasteordet er:
kaste Throwable_instance;
Over Throwable_instance skal være et objekt af klassen Throwable. Primitive typer som int, float eller char og den ikke-kastbare klasse forekomst kan ikke smides med kaste søgeord.
Lad os tage et eksempel for at forstå søgeordet.
Klassetest {Public static void main (String [] args) {Kast nyt ArithmeticException ("/ ved nul"); }}
I ovennævnte kode kaster søgeordskassen en forekomst af undtagelsesklassen "ArithmeticException". Hvis kasteordet ikke var blevet brugt, ville hovedmetoden () have internt oprettet en undtagelsesobjekt, der blev overdraget til JVM.
Pointe at huske om søgeordet kaste:
- Det overfører undtagelsesobjektet manuelt til JVM.
- Den bruges bedst til de brugerdefinerede undtagelser eller tilpassede undtagelser.
- Hvis hukommelsen ikke er allokeret til undtagelsesobjektet, der kastes med kasteord, opstår der en runtime-undtagelse, NullPointerException.
- Kasteordet stopper gennemførelsen af programmet umiddelbart efter dets forekomst. Vi kan ikke direkte skrive en erklæring efter kasteopgørelsen. Hvis vi skriver en staement direkte efter kaste udsagn, vil kompilatoren vise en fejl, uopnåelig erklæring under kompilering.
- Kun genstande af Throwable klasse kan smides med kasteord. Hvis objektet smidt er ikke et objekt af klasse Throwable så får vi en kompileringstid fejl "Incompatible type found. . kræves java.lang.Throwable "
Bemærk:
Kasteordet bruges i C ++, JAVA, C #, til manuelt at kaste en undtagelse.
Definition af kast
" Kaster " nøgleordet bruges til at delegere ansvaret for at håndtere den undtagelse, der opstod i metoden, til dens opkaldsmetode. Opkaldsmetoden er ansvarlig for håndtering af undtagelsen, det kan være en anden metode eller JVM. Det erklærer listen over undtagelsesklasser, der kan forekomme i metoden.
Brugen af kasteordet overbeviser kompilatoren om, at undtagelsen fandt sted i metoden, der skal håndteres af opkaldsmetoden, og der opstår ingen kompileringsfejl. Men opkaldsmetoden skal håndtere undtagelsen eller delegere ansvaret for at håndtere undtagelsen fra dens hierarkimetode. Når runtime-undtagelsen opstår, forhindrer det ikke programmets unormale afslutning, selv efter brugen af kasteord. Hvis opkaldsmetoden er hoved (), håndterer JVM som standard undtagelsen.
Den generelle form for kasteordet er:
return_type method_name (parameter-liste) kaster undtagelseClass_list {// body of method}
Vi kan se, at kaster søgeord vises efter underskrift af metoden, og det kan indeholde listen over undtagelsesklasser, der kan forekomme i metoden. Listen over undtagelsesklasserne, der er skrevet efter nøgleordet, er adskilt af kommaen.
Lad os tage et eksempel for at forstå kastet søgeord.
calss Test {public static void main (String [] args) kaster AfbrudtException {tråd søvn (10000); }}
I ovenstående kode er hovedtråden lavet til at sove i nogen tid ved hjælp af sleep () -metoden. Nu, når hovedmetoden er i søvn, er det muligt, at de andre tråde kan afbryde hovedtråden. Men kasteordet bruges i efter signaturen af main () -metoden, så programmet kunne kompilere let. Kasteordet erklærer den afkrydsede undtagelsesklasse InterruptedException. Nu, hvis en anden tråd afbryder hovedtråden i løbet af kørselstiden, vil kaster nøgleordet overdrage denne undtagelse til kalderen af main () -metoden, som er JVM. JVM ville opsige programmet unormalt.
Pointe at huske om kaster søgeord:
- Kasteordet bruges kun til at deklarere de klassificerede undtagelsesklasser. Brugen af kasteordet for en ukontrolleret undtagelse har ingen virkning.
- Hvis metoden ikke ønsker at håndtere undtagelsen alene, delegerer den denne undtagelse til opkaldsmetoden for den pågældende klasse ved at bruge kasteordet.
- Dets brug tillader kun en jævn sammenstilling af programmet.
- Hvis der opstår en undtagelse ved kørsel, afbryder programmet unormalt, selv efter brugen af kasteordet.
- Det anbefales at bruge prøve / fangstblok for normal opsigelse af programmet, hvis der opstår en undtagelse ved kørsel.
Bemærk:
Søgeordets kaster bruges kun i Java. C ++ og C # bruger ikke kasteordet.
Nøgleforskelle mellem kast og kast
- Søgeordet kaster overdraget ansvaret for undtagelseshåndtering til JVM manuelt, mens søgeordet smider overlever ansvaret for undtagelseshåndtering til opkaldsmetoden for koden, hvor der er undtaget en undtagelse.
- Kasteordet efterfølges af undtagelsesobjektet, som det overfører til JVM. På den anden side kastes søgeord efterfulgt af undtagelsesklasserne, at det kan forekomme i metoden.
- Kasteordet kan kaste et enkelt undtagelsesobjekt ad gangen, mens kasteordet kan angive flere undtagelsesklasser adskilt af et komma ad gangen.
Konklusion:
Kasteordet bruges bedst til den tilpassede undtagelse. Try / catch-blokken er bedst til at håndtere undtagelserne i forhold til at kaste søgeord.