En undtagelse er en runtime-fejl. Der er to typer undtagelser kendt som markerede og ikke-markerede undtagelser. Når en markeret undtagelse forekommer, er Java-applikationen forbundet til en ekstern ressource, såsom en fil, enhed eller en database. Disse undtagelser kontrolleres af compileren. Nogle eksempler på markerede undtagelser er IO-undtagelse og FileNotFound-undtagelse. Når der forekommer en ikke-markeret undtagelse, er applikationen ikke forbundet til nogen ekstern ressource. Disse undtagelser kontrolleres ikke af compileren. Nogle eksempler på ikke-kontrollerede undtagelser er Aritmetisk undtagelse og ArrayOutOfBound-undtagelse. Denne artikel diskuterer forskellen mellem markeret og ikke-markeret undtagelse i Java. Det vigtigste forskel mellem markeret og ikke-markeret undtagelse i Java er det en markeret undtagelse kontrolleres af compileren, mens en ikke markeret undtagelse ikke kontrolleres af compileren.
1. Oversigt og nøgleforskel
2. Hvad er Kontrolleret undtagelse i Java
3. Hvad er ikke-markeret undtagelse i Java
4. Ligheder mellem kontrolleret og ikke-markeret undtagelse i Java
5. Sammenligning side ved side - Kontrolleret vs ikke-markeret undtagelse i Java i tabelform
6. Resume
Når en markeret undtagelse forekommer, er Java-applikationen forbundet til en ekstern ressource. Denne ressource kan være en enhed som printer. Det kan være en fil eller en database. Derfor kontrolleres disse undtagelser af compileren. IO-undtagelse er en markeret undtagelse. Det opstår på grund af en fejl i enheden. Når applikationen får adgang til en fil, der ikke findes, vil den forårsage en FileNotFound-undtagelse. En applikation kan forbindes til en database som MySQL, Oracle osv. For at gemme data. Hvis der opstod en fejl relateret til en database, ville det være en SQL-undtagelse. Dette er nogle eksempler på kontrollerede undtagelser. I alle disse er applikationen forbundet til en ydre ressource. I markerede undtagelser er det obligatorisk at håndtere undtagelsen. Hvis det ikke håndteres, afsluttes den korrekte strøm af programmet, og klassefilen genereres ikke. Fejlen kan håndteres ved hjælp af tryk, fangstblok.
Figur 01: Kontrolleret undtagelseshåndtering
I henhold til ovenstående læste FileReader data fra filen. Teksten text.txt findes ikke på det specificerede sted. Koden, der kan give undtagelsen, placeres inden i prøveblokken. Beskeden, der skal udskrives, er inden i fangstblokken. Da der ikke er nogen fil kaldet text1.txt, forårsager dette en FileNotFoundException. Ved at bruge undtagelseshåndtering udskrives meddelelsen på skærmen.
Ikke-markerede undtagelser kontrolleres ikke af compileren. I modsætning til markerede undtagelser, med ikke-markerede undtagelser, er Java-applikationen ikke forbundet til en ydre ressource såsom fil, database eller en enhed. Nogle almindelige, ikke-kontrollerede undtagelser er Arithmetic, ArrayOutOfBound og NullPointer Undtagelser.
int a = 10, b = 0;
int div = a / b;
System.out.println (div);
Dette vil medføre en aritmetisk undtagelse på grund af at dykke 'a' med nul. Se nedenstående kode.
Figur 02: Håndtering af aritmetisk undtagelse
I henhold til ovenstående program er variabel a en heltalværdi. Variabel b er 0. Opdelingen af disse to tal er et skillelinje med nul. Derfor vil det medføre en aritmetisk undtagelse. Det kan håndteres ved hjælp af try-catch-blok. Udsagnene, der kan forårsage undtagelsen, placeres i trykblokken. Den meddelelse, der skal vises, findes i fangstblokken.
Se nedenstående stykke af koden.
int array1 [] = 1,2,3,4,5;
System.out.println (matrix1 [5]);
Dette vil medføre en undtagelse. Array1 er en matrix med 5 elementer. Startindekset for arrayet er nul. Udskrivning af 5th indeksværdi forårsager en undtagelse, fordi den er ude af grænse. Den maksimale indeks for array1 er 4.
Figur 03: Håndtering af ArrayOutOfBound-undtagelser
I henhold til ovenstående program har matrix1 5 elementer. Udskrivning af elementet med indeks 6 vil medføre en undtagelse, fordi det er ubundet. Det maksimale indeks, der kan gemmes i array1, er 5. Fejlmeddelelsen udskrives ved at udføre fangstblokken.
Kontrolleret vs ikke-markeret undtagelse i Java | |
En kontrolleret undtagelse er en runtime-fejl, der kontrolleres af compileren. | En ikke-markeret undtagelse er en runtime-fejl, der ikke kontrolleres af compileren. |
Hændelse | |
Når en markeret undtagelse forekommer, er Java-applikationen forbundet til en ydre ressource såsom fil, enhed eller en database. | Når der forekommer en ikke-markeret undtagelse, er Java-applikationen ikke forbundet til en ydre ressource. |
eksempler | |
IOException, FileNotFoundException, SQLException er nogle eksempler på kontrollerede undtagelser. | Den aritmetiske undtagelse, ArrayOutOfBoundException, NullPointerException er nogle eksempler på ukontrollerede undtagelser. |
En undtagelse er en begivenhed, der afbryder udførelsen af programstrømmen. Der er to typer undtagelser. De kaldes kontrollerede undtagelser og ikke-markerede undtagelser. Denne artikel diskuterede forskellen mellem en markeret undtagelse og ikke-markerede undtagelser. Forskellen mellem markeret og ikke-markeret undtagelse i Java er, at en markeret undtagelse kontrolleres af compileren, mens en ikke markeret undtagelse ikke kontrolleres af kompilatoren. Da undtagelser påvirker den korrekte strøm af programudførelse, er det en god programmeringspraksis at håndtere dem.
1.Point, selvstudier. “Java-undtagelser.”, Tutorials Point, 8. januar 2018. Findes her
2.nareshtechnologies. Kontrolleret vs ikke-markeret undtagelse || Ofte stillede spørgsmål om Java-kerne, Naresh i Technologies, 31. december 2016. Findes her