Forskjell mellom unntak og feil
Unntak mot feil
Uventet oppførsel er bundet til å skje når et program kjører. Dette kan skyldes unntak eller feil. Unntak er hendelser, som kan forstyrre normal programflyt. Feil er forhold som kan betraktes som uopprettelige. Unntak er hovedsakelig relatert til selve applikasjonen, mens feil er relatert til systemet som programmet kjører på.
Hva er en unntak?
Unntak er en hendelse som kan forstyrre normal programflyt. Navnet unntak kommer fra "eksepsjonell begivenhet". Å kaste et unntak er prosessen med å lage et unntaksobjekt og overlate det til kjøretidssystemet. Unntaksobjekt er opprettet ved hjelp av metoden der unntaket oppstod. Unntaksobjekt inneholder nyttig informasjon, for eksempel typen og beskrivelsen av unntaket. Når runtime-systemet mottar unntaksobjektet, vil det prøve å finne noen til å håndtere det i anropsstakken ved å krysse det i omvendt rekkefølge (der metodene ble kalt). Call stack er den bestilte listen over metoder, som ble kalt før metoden der unntaket oppstod. Rundtidssystemet er vellykket hvis det finner en metode med en unntakshåndterer. Unntakshandler er en blokk med kode som offisielt kan håndtere nevnte unntak. Hvis kjøretidssystemet finner en passende handler (f.eks. Type unntak samsvarer med typen som kan håndteres), vil den passere unntaksobjektet til håndtereren. Dette kalles å fange unntaket. Men hvis unntaket ikke kan håndteres, avslutter programmet. I Java arver unntak fra "Throwable class. 'NullPointerException og ArrayIndexOutOfBoundsException er to vanlige unntak i Java.
Hva er en feil?
En feil er en betingelse som kan betraktes som uopprettelig, for eksempel programmet krever en mengde minne som er større enn det som er tilgjengelig. Disse feilene kan ikke håndteres ved kjøring. Hvis det oppstår en feil, avslutter programmet. I Java, arver arv fra Throwable class. Feilene står vanligvis for alvorlige problemer som programmereren (eller søknaden) ikke bør prøve å fange. Feil er ganske enkelt unormale forhold, som aldri forventes å forekomme under normale omstendigheter, og derfor ikke forventes. For eksempel er OutOfMemoryError, StackOverflowError og ThreadDead slike feil. Metoder bør aldri ha håndtere for feil.
Hva er forskjellen mellom unntak og feil?
Begge feil og unntak er uønsket forekomst under utførelsen av et program. Imidlertid har de viktige forskjeller. Unntak kan planlegges av programmereren, mens det er vanskelig å forutse en feil.Unntak kan kontrolleres eller ikke merkes. Men feil er alltid ukontrollert. Unntak indikerer vanligvis en feil forårsaket av programmereren. Det oppstår imidlertid feil på grunn av en systemfeil eller en upassende bruk av en ressurs. Derfor bør unntak håndteres på applikasjonsnivå, mens feilene bør tas hånd om på systemnivå (kun hvis det er mulig). Etter å ha håndtert et unntak, er du garantert å gå tilbake til normal programflyt. Men selv om en feil er fanget, kan programmøren kanskje ikke vite hvordan man skal håndtere det i utgangspunktet. I motsetning til tradisjonell feilhåndtering tillater unntak å skille feilhåndteringskode fra vanlig kode.