Zpracování výjimek v JSP
Co je výjimka v JSP?
b) Výjimky v JSP nastanou, když dojde k chybě v kódu buď vývojářem, nebo vnitřní chybě systému. Zpracování výjimek v JSP je stejné jako v Java kde spravujeme výjimky pomocí bloků Try Catch. Na rozdíl od Java, v JSP existují výjimky, i když v kódu není žádná chyba.
Typy výjimek v JSP
Výjimky v JSP jsou tří typů:
- Zaškrtnutá výjimka
- Výjimka za běhu
- Výjimka chyby
Zaškrtnuté výjimky
Obvykle se jedná o chybu uživatele nebo problémy, které vývojář nevidí, se označují jako kontrolované výjimky. Některé příklady kontrolovaných výjimek jsou:
- FileNotFoundException: Toto je kontrolovaná výjimka (kde se pokusí najít soubor, když soubor není nalezen na disku).
- Výjimka IO: Toto je také kontrolovaná výjimka, pokud dojde k nějaké výjimce během čtení nebo zápisu souboru, pak je vyvolána výjimka IO.
- SQLException: Toto je také zaškrtnutá výjimka, když je soubor připojen SQL databáze a dojde k problému s konektivitou databáze SQL, pak je vyvolána výjimka SQL
Výjimky za běhu
Výjimky za běhu jsou ty, kterým se programátor mohl vyhnout. V době kompilace jsou ignorovány. Některé příklady výjimek za běhu jsou:
- Výjimka ArrayIndexOutOfBounds: Toto je výjimka za běhu, když velikost pole překročí prvky.
- Aritmetická výjimka: Toto je také výjimka za běhu, pokud existují nějaké matematické operace, které nejsou za normálních podmínek povoleny, například dělení čísla 0 poskytne výjimku.
- Výjimka NullPointer: Toto je také výjimka za běhu, která je vyvolána, když je proměnná nebo objekt null, když se k nim pokoušíme přistupovat. To je velmi častá výjimka.
Chyby:
Problém nastává kvůli ovládání uživatelem nebo programátorem. Pokud zásobník přeteče, může dojít k chybě. Některé příklady chyby jsou uvedeny níže:
- Chyba: Tato chyba je podtřídou throwable, která označuje vážné problémy, které aplikace nemůže zachytit.
- Chyba instanciace: K této chybě dochází, když se pokusíme vytvořit instanci objektu, ale nepodaří se to.
- Interní chyba: Tato chyba nastane, když dojde k chybě z JVM, tj Java Virtuální stroj.
Výjimky chyb
Je to instance třídy throwable a používá se na chybových stránkách. Některé metody vrhací třídy jsou:
- Veřejný řetězec getMessage() – vrátí zprávu o výjimce.
- Veřejné throwablegetCause() – vrátí příčinu výjimky
- Veřejný printStackTrace()– vrátí stacktrace výjimky.
Jak zacházet s výjimkami v JSP
Zde je příklad, jak zpracovat výjimku v 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>
Vysvětlení kódu:
Exception_example.jsp
1. řádek kódu: Zde nastavujeme chybovou stránku na guru_error.jsp, která bude použita, když bude chyba přesměrována.
15. řádek kódu: bereme proměnnou num a nastavujeme ji na 10 a kontrolujeme podmínku, pokud je num 10, pak vyvoláme výjimku za běhu se zprávou jako Error Condition.
Guru_error.jsp
1. řádek kódu: Zde nastavujeme isErrorPageattribute na true.
12. řádek kódu: Výjimka byla vyvolána v example_example.jsp pomocí throw object a tato výjimka se zde zobrazí jako atribut IsErrorPage je označen jako true. Pomocí objektu výjimky (toto je objekt, který umožňuje JSP přístup k datům o výjimce.) se snažíme vytisknout stacktrace chyby, která se vyskytla v example_example.jsp.
Když spustíte výše uvedený kód, získáte následující výstup:
Výstup:
Byla vyvolána výjimka, která byla vyvolána z příkladu_výjimky.jsp pomocí objektu throw runtime výjimky a dostáváme výše uvedený kód. Také je volán guru_error.jsp, ze kterého došlo k výjimce Guru z tohoto souboru.
Shrnutí
- K výjimkám v JSP dochází, když je v kódu chyba buď vývojářem, nebo vnitřní chyba ze systému.
- Výjimky v JSP jsou 3 typů: zaškrtnuté výjimky, výjimky za běhu a výjimky z chyb
- Zaškrtnutá výjimka je obvykle chyba uživatele nebo problémy, které vývojář nevidí, se nazývají kontrolované výjimky.
- Výjimky za běhu jsou ty, kterým se programátor mohl vyhnout. V době kompilace jsou ignorovány.
- Výjimka chyby je instancí třídy throwable a používá se na chybových stránkách.