Forskellen mellem kontrolleret undtagelse og runtime-undtagelse

Forskellen mellem kontrolleret undtagelse og runtime-undtagelse
Forskellen mellem kontrolleret undtagelse og runtime-undtagelse

Video: Forskellen mellem kontrolleret undtagelse og runtime-undtagelse

Video: Forskellen mellem kontrolleret undtagelse og runtime-undtagelse
Video: Relative Velocity - Basic Introduction 2024, November
Anonim

Checked Exception vs Runtime Exception

Undtagelser er særlige typer begivenheder, som kan forstyrre det normale programflow. Navneundtagelsen kommer fra "ekstraordinær begivenhed". At kaste en undtagelse er processen med at oprette et undtagelsesobjekt og videregive det til runtime-systemet. Når runtime-systemet modtager undtagelsesobjektet, vil det forsøge at finde nogen til at håndtere det i 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 undtagelsesbehandler. Exception handler er en kodeblok, der officielt kan håndtere den nævnte undtagelse. Hvis runtime-systemet finder en passende handler, vil det videregive undtagelsesobjektet til handleren. Dette kaldes at fange undtagelsen. Men hvis undtagelsen ikke kan håndteres, afsluttes programmet. I Java arver undtagelser fra Throwable-klassen. Markerede undtagelser er undtagelser, hvor håndtering håndhæves af compileren. Runtime undtagelser er en type undtagelser, som ikke kontrolleres af compileren.

Hvad er en kontrolleret undtagelse?

Checked Exceptions er enten objekter af klassen java.lang.exception eller dens underklasser (undtagen java.lang. RuntimeException og dens underklasser). Afkrydsede undtagelser "tjekkes" på kompileringstidspunktet. Det betyder, at programmøren enten skal fange eller smide disse undtagelser, ellers ville kompileringen klage (og forårsage en kompileringsfejl). På grund af denne grund er mange kontrollerede undtagelser meget velkendte for programmører. For eksempel er IOException og dens underklasser kontrollerede undtagelser, og hver gang programmøren beskæftiger sig med at få adgang til eller ændre en fil, kontrollerer compileren for at sikre, at alle mulige IOExceptions bliver taget hånd om af programmøren.

Hvad er en runtime-undtagelse?

Runtime Exceptions består af java.lang. RuntimeException og alle dets underklasser. Teoretisk set tjener de samme formål som kontrollerede undtagelser, og kan smides eller håndteres som kontrollerede undtagelser, men håndteringen af dem håndhæves ikke af compileren. Derfor hører Runtime-undtagelser til familien af ukontrollerede undtagelser. NullPointerException, NumberFormatEception, ClassCastException og ArrayIndexOutOfBoundsException er almindelige runtime-undtagelser i Java.

Hvad er forskellen mellem Checked Exception og Runtime Exception?

Selv om både markerede undtagelser og runtime-undtagelser er uønskede forekomster under udførelsen af et program, har de deres forskelle. Kontrolleret undtagelseshåndtering håndhæves af compileren, men runtime-undtagelser er det ikke. Derfor skal afkrydsede undtagelser kastes eller håndteres for at koden kan kompilere, men der er ikke et sådant krav vedrørende runtime-undtagelser. Følgelig hører runtime-undtagelser til umarkeret undtagelseskategori sammen med fejl.

Ulempen med afkrydsede undtagelser er, at programmøren skal håndtere det, selvom hun ikke ved, hvordan det skal. Så hvis programmøren bare smider en ny undtagelse uden at pakke originalen ind, vil staksporet, der hører til den oprindelige undtagelse, gå tabt. Det er her, runtime undtagelser er nyttige. Fordi alle runtime-undtagelser kan håndteres på et enkelt sted, kan programmører derfor 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 afkrydset undtagelse der kunne frembringes af en bestemt metode. I modsætning hertil kan forskellige runtime-undtagelser kastes uden programmørens viden.

Anbefalede: