Forskel mellem undtagelse og fejl

Anonim

Undtagelse vs Fejl

Uventet adfærd er bundet til at 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 betragtes som uoprettelige. Undtagelser er hovedsagelig relateret til selve applikationen, mens fejl er relateret til det system, som programmet kører på.

Hvad er en undtagelse?

Undtagelse er en begivenhed, der 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. Undtagelsesobjekt er oprettet ved den metode, hvor undtagelsen fandt sted. Undtagelsesobjekt 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 inden for opkaldsstakken ved at krydse det i omvendt rækkefølge (hvor metoderne blev kaldt). Call stack er den ordnede liste over metoder, der blev kaldt forud for den metode, hvor undtagelsen fandt sted. 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 handler (f.eks. Type undtagelse matcher den type, der kan håndteres), vil den passere undtagelsesobjektet til handleren. Dette kaldes at fange undtagelsen. Men hvis undtagelsen ikke kan håndteres, afbrydes 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 betingelse, der kan betragtes som uoprettelig, såsom programmet, der kræver en mængde hukommelse, der er større end det, der er tilgængeligt. Disse fejl kan ikke håndteres ved kørsel. Hvis der opstår en fejl, afbrydes programmet. I Java, arver arve fra Throwable klasse. Fejl står normalt for alvorlige problemer, som programmereren (eller ansøgningen) ikke bør forsøge at fange. Fejl er simpelthen unormale forhold, som aldrig forventes at forekomme under normale omstændigheder og derfor aldrig forventes. For eksempel er OutOfMemoryError, StackOverflowError og ThreadDead sådanne fejl. Metoder bør aldrig have håndtere for fejl.

Hvad er forskellen mellem undtagelse og fejl?

Begge fejl og undtagelser er uønsket forekomst under udførelsen af ​​et program. De har dog væsentlige forskelle. Undtagelser kan forudses af programmøren, mens en fejl er vanskelig at forudse.Undtagelser kan kontrolleres eller afkrydses. Men fejl er altid ukontrolleret. Undtagelser angiver 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å applikationsniveauet, mens fejl skal tages op på systemniveau (kun hvis det er muligt). Efter at du har håndteret en undtagelse, er du garanteret at vende tilbage til det normale programflow. Men selvom en fejl er fanget, kan programmøren måske ikke vide, hvordan man håndterer det i første omgang. I modsætning til traditionel fejlhåndtering tillader undtagelser at adskille fejlhåndteringskode fra almindelig kode.