Forskellen mellem Undtaget Undtagelse og Undtagelse af Undtagelse

Anonim

Kontrolleret Undtagelse vs Runtime Undtagelse

Undtagelser er særlige typer begivenheder, som kan forstyrre det normale programflow. Navnet undtagelsen kommer fra "ekstraordinære begivenhed". At kaste en undtagelse er processen med at oprette en undtagelsesobjekt og aflevere den til runtime-systemet. Når runtime-systemet modtager undtagelsesobjektet, vil det forsøge at finde nogen til at håndtere det inden for opkaldsstakken ved at krydse det i omvendt rækkefølge (hvor metoderne blev kaldt). Runtime-systemet er vellykket, hvis det finder en metode med en undtagelseshandler. Undtagelseshåndterer er en blok kode, der officielt kan håndtere den nævnte undtagelse. Hvis runtime-systemet finder en passende håndterer, vil den passere undtagelsesobjektet til håndtereren. Dette kaldes at fange undtagelsen. Men hvis undtagelsen ikke kan håndteres, afbrydes programmet. I Java arver undtagelser fra Throwable Class. Kontrollerede undtagelser er undtagelser, som håndteringen håndhæves af kompilatoren. Runtime undtagelser er en type undtagelser, som ikke kontrolleres af kompilatoren.

Hvad er en kontrolleret undtagelse?

Kontrollerede undtagelser er enten objekter af klassen java. Lang. undtagelse eller dets underklasser (undtagen java. lang. RuntimeException og dens underklasser). Kontrollerede undtagelser er "checket" på kompileringstidspunktet. Det betyder, at programmøren enten skal fange eller smide disse undtagelser, ellers ville kompileren klage (forårsager en compilerfejl). På grund af denne grund er mange kontrollerede undtagelser meget velkendte for programmører. Eksempelvis kontrolleres IOException og dens underklasser undtagelser, og når programmereren handler om adgang til eller ændring af en fil, kontrollerer compileren at sikre, at alle mulige IOExceptions er taget hånd om af programmøren.

Hvad er en Runtime-undtagelse?

Runtime undtagelser består af java. Lang. RuntimeException og alle dens underklasser. Teoretisk set tjener de samme formål som kontrollerede undtagelser, og de kan kastes eller håndteres som kontrolleret undtagelse, men håndteringen af ​​dem håndhæves ikke af kompilatoren. Derfor tilhører Runtime undtagelser familien af ​​ukontrollerede undtagelser. NullPointerException, NumberFormatEception, ClassCastException og ArrayIndexOutOfBoundsException er almindelige runtime undtagelser i Java.

Hvad er forskellen mellem Checked Exception og Runtime Exception?

Selvom både kontrollerede undtagelser og runtime-undtagelser er uønsket forekomst under udførelsen af ​​et program, har de deres forskelle. Kontrolleret undtagelseshåndtering håndhæves af kompilatoren, men undtagelser fra runtime er ikke.Derfor skal kontrollerede undtagelser kastes eller håndteres for at koden skal kompilere, men der er ikke noget sådant krav med hensyn til runtime-undtagelser. Følgelig tilhører køretid undtagelser ukontrollerede undtagelser kategori sammen med fejl.

Ulempen med markerede undtagelser er, at programmøren skal håndtere det, selvom hun ikke ved hvordan. Så hvis programmøren bare kaster en ny undtagelse uden at pakke originalen, vil stakkesporet, der tilhører den oprindelige undtagelse, gå tabt. Det er her, hvor runtime undtagelser kommer til nytte. Fordi alle runtime undtagelser kan håndteres på et enkelt sted, så programmører kan skrive mindre mængde kode. På den anden side, da kontrollerede undtagelser skal fanges, er der ingen overraskelse for programmøren. Hun vil altid vide, hvilken kontrolleret undtagelse der kunne kastes på en bestemt måde. I modsætning til dette kan forskellige runtime undtagelser smides uden programmørens viden.