Undtagelseshåndtering i JSP
Hvad er undtagelse i JSP?
Undtagelser i JSP opstår, når der er en fejl i koden enten af udvikleren eller intern fejl fra systemet. Undtagelseshåndtering i JSP er den samme som i Java hvor vi administrerer undtagelser ved hjælp af Try Catch-blokke. I modsætning til Java, er der undtagelser i JSP, også når der ikke er nogen fejl i koden.
Typer af undtagelser i JSP
Undtagelser i JSP er af tre typer:
- Afkrydset undtagelse
- Runtime Undtagelse
- Fejlundtagelse
Afkrydset undtagelser
Det er normalt en brugerfejl eller problemer, som ikke ses af udvikleren, betegnes som kontrollerede undtagelser. Nogle afkrydsede undtagelseseksempler er:
- FileNotFoundException: Dette er en markeret undtagelse (hvor den forsøger at finde en fil, når filen ikke findes på disken).
- IO undtagelse: Dette er også markeret undtagelse, hvis der er en undtagelse, der er sket under læsning eller skrivning af en fil, så hæves IO-undtagelsen.
- SQLException: Dette er også en markeret undtagelse, når filen er forbundet med SQL database, og der er et problem med forbindelsen til SQL-databasen, så opstår SQLException
Runtime undtagelser
Runtime undtagelser er den, som programmøren kunne have undgået. De ignoreres på tidspunktet for kompilering. Nogle eksempler på Runtime-undtagelser er:
- ArrayIndexOutOfBoundsException: Dette er en runtime-undtagelse, når array-størrelsen overstiger elementer.
- Aritmetisk undtagelse: Dette er også en runtime-undtagelse, når der er nogen matematiske operationer, som ikke er tilladt under normale forhold, f.eks. vil dividering af et tal med 0 give en undtagelse.
- NullPointer undtagelse: Dette er også en runtime-undtagelse, som opstår, når en variabel eller et objekt er null, når vi forsøger at få adgang til det samme. Dette er en meget almindelig undtagelse.
fejl:
Problemet opstår på grund af brugerens eller programmørens kontrol. Hvis stakken løber over, kan der opstå fejl. Nogle eksempler på fejlen er angivet nedenfor:
- Fejl: Denne fejl er en underklasse af throwable, som indikerer alvorlige problemer, som en applikation ikke kan fange.
- Instantiationsfejl: Denne fejl opstår, når vi forsøger at instansiere et objekt, og det mislykkes.
- Intern fejl: Denne fejl opstår, når der er opstået en fejl fra JVM, dvs Java Virtual Machine.
Fejlundtagelser
Det er en forekomst af den smidbare klasse, og den bruges på fejlsider. Nogle metoder til smidbar klasse er:
- Offentlig streng getMessage() – returnerer beskeden om undtagelsen.
- Offentlig throwablegetCause() – returnerer årsagen til undtagelsen
- Offentlig printStackTrace()– returnerer stacktrace af undtagelsen.
Sådan håndteres undtagelser i JSP
Her er et eksempel på, hvordan man håndterer undtagelse i JSP:
Exception_example.jsp
<%@ page errorPage="guru_error.jsp" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Exception Guru JSP1</title> </head> <body> <% int num = 10; if (num == 10) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
Guru_error.jsp
<%@ page isErrorPage="true" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Exception Page</title> </head> <body> <p>Guru Exception has occurred</p> <% exception.printStackTrace(response.getWriter()); %> </body> </html>
Forklaring af koden:
Exception_example.jsp
Kodelinje 1: Her indstiller vi fejlsiden til guru_error.jsp, som vil blive brugt, når fejlen vil blive omdirigeret.
Kodelinje 15: vi tager et variabelt num og sætter det til 10 og kontrollerer en betingelse, hvis num er 10, så sender vi en Runtime Exception med meddelelsen som Error Condition.
Guru_error.jsp
Kodelinje 1: Her indstiller vi isErrorPageattribute til sand.
Kodelinje 12: Undtagelsen er blevet rejst i exception_example.jsp ved hjælp af throw-objekt, og denne undtagelse vil blive vist her, da IsErrorPage-attributten er markeret som sand. Ved at bruge undtagelsen (dette er et objekt, som gør det muligt at få adgang til undtagelsesdataene af JSP.) objektet forsøger vi at udskrive stacktrace af fejlen, der opstod i exception_example.jsp.
Når du udfører ovenstående kode får du følgende output:
Output:
Undtagelsen er blevet rejst, som blev kastet fra exception_example.jsp ved hjælp af throw-objektet af runtime-undtagelse, og vi får ovenstående kode. Også guru_error.jsp kaldes, hvorfra Guru-undtagelsen er opstået fra denne fil.
Resumé
- Undtagelser i JSP forekommer, når der er en fejl i koden enten af udvikleren eller intern fejl fra systemet.
- Undtagelser i JSP er af 3 typer: Kontrollerede undtagelser, Runtime-undtagelser og fejlundtagelser
- Kontrolleret undtagelse er normalt en brugerfejl, eller problemer, som ikke ses af udvikleren, betegnes som kontrollerede undtagelser.
- Runtime undtagelser er den, som programmøren kunne have undgået. De ignoreres på tidspunktet for kompilering.
- Fejlundtagelse er en forekomst af den kastebare klasse, og den bruges på fejlsider.