Forskellen mellem undtagelse og fejl

Forskellen mellem undtagelse og fejl
Forskellen mellem undtagelse og fejl

Video: Forskellen mellem undtagelse og fejl

Video: Forskellen mellem undtagelse og fejl
Video: Modem vs Router - What's the difference? 2024, Juli
Anonim

undtagelse vs. fejl

Uventet adfærd vil sandsynligvis forekomme, når et program kører. Dette kan skyldes undtagelser eller fejl. Undtagelser er hændelser, som kan forstyrre det normale programflow. Fejl er forhold, der kan anses for uoprettelige. Undtagelser er for det meste relateret til selve applikationen, mens fejl er relateret til det system, programmet kører på.

Hvad er en undtagelse?

Undtagelse er en begivenhed, 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. Exception-objektet oprettes ved den metode, hvor undtagelsen opstod. Exception-objektet indeholder nyttige oplysninger såsom typen og beskrivelsen af undtagelsen. 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). Call stack er den ordnede liste over metoder, som blev kaldt før den metode, hvor undtagelsen opstod. 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 (dvs. typen af undtagelse matcher den type, der kan håndteres), 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 class'. NullPointerException og ArrayIndexOutOfBoundsException er to almindelige undtagelser i Java.

Hvad er en fejl?

En fejl er en tilstand, der kan betragtes som uoprettelig, f.eks. at programmet kræver en større mængde hukommelse end tilgængelig. Disse fejl kan ikke håndteres under kørsel. Hvis der opstår en fejl, afsluttes programmet. I Java arver fejl fra Throwable-klassen. Fejl står norm alt for alvorlige problemer, som programmøren (eller applikationen) ikke bør forsøge at fange. Fejl er simpelthen unormale forhold, som aldrig forventes at forekomme under normale omstændigheder, og derfor aldrig forudses. For eksempel er OutOfMemoryError, StackOverflowError og ThreadDead sådanne fejl. Metoder bør aldrig have behandlere til fejl.

Hvad er forskellen mellem undtagelse og fejl?

Både fejl og undtagelser forekommer uønsket under afviklingen af et program. De har dog vigtige forskelle. Undtagelser kan forudses af programmøren, mens en fejl er svær at forudse. Undtagelser kan markeres eller fjernes. Men fejl er altid ukontrollerede. Undtagelser indikerer typisk en fejl forårsaget af programmøren. Der opstår dog fejl på grund af en systemfejl eller en uhensigtsmæssig brug af en ressource. Derfor bør undtagelser håndteres på applikationsniveau, mens fejl skal tages hånd om på systemniveau (kun hvis det er muligt). Efter at have håndteret en undtagelse, er du garanteret at vende tilbage til norm alt programflow. Men selvom en fejl bliver fanget, ved programmøren måske ikke, hvordan den skal håndteres i første omgang. I modsætning til traditionel fejlhåndtering tillader undtagelser at adskille fejlhåndteringskode fra almindelig kode.

Anbefalede: