Обработка на изключения в JSP
Какво е изключение в JSP?
Изключения в JSP възникват, когато има грешка в кода от разработчика или вътрешна грешка от системата. Обработката на изключения в JSP е същата като в Java където управляваме изключения с помощта на блокове Try Catch. За разлика от Java, в JSP има изключения и когато няма грешка в кода.
Видове изключения в JSP
Изключенията в JSP са три вида:
- Отметнато изключение
- Изключение по време на изпълнение
- Изключение за грешка
Проверени изключения
Обикновено това е потребителска грешка или проблеми, които не се виждат от разработчика, се наричат проверени изключения. Някои примери за проверени изключения са:
- FileNotFoundException: Това е проверено изключение (където се опитва да намери файл, когато файлът не е намерен на диска).
- IO изключение: Това също се проверява като изключение, ако има някакво изключение, възникнало по време на четене или запис на файл, тогава се повдига IO изключение.
- SQLException: Това също е проверено изключение, когато файлът е свързан с SQL база данни и има проблем със свързаността на SQL базата данни, след което се повдига SQLException
Изключения по време на изпълнение
Изключенията по време на изпълнение са тези, които програмистът е могъл да избегне. Те се игнорират по време на компилация. Някои примери за изключения по време на изпълнение са:
- Изключение на ArrayIndexOutOfBoundsException: Това е изключение по време на изпълнение, когато размерът на масива надвишава елементи.
- Аритметично изключение: Това също е изключение по време на изпълнение, когато има някакви математически операции, които не са разрешени при нормални условия, например разделянето на число на 0 ще даде изключение.
- Изключение за NullPointer: Това също е изключение по време на изпълнение, което се повдига, когато променлива или обект е нула, когато се опитваме да осъществим достъп до същото. Това е много често изключение.
грешки:
Проблемът възниква поради контрола на потребителя или програмиста. Ако стекът препълва, може да възникне грешка. Някои примери за грешка са изброени по-долу:
- грешка: Тази грешка е подклас на throwable, който показва сериозни проблеми, които приложението не може да улови.
- Грешка при инстанциране: Тази грешка възниква, когато се опитаме да създадем обект, но той не успява да направи това.
- Вътрешна грешка: Тази грешка възниква, когато възникне грешка от JVM, т.е Java Виртуална машина.
Изключения при грешки
Това е екземпляр на класа за изхвърляне и се използва в страници с грешки. Някои методи на хвърляем клас са:
- Обществен низ getMessage() – връща съобщението за изключение.
- Обществено throwablegetCause() – връща причината за изключението
- Публичен printStackTrace()– връща следата на стека на изключението.
Как да се справим с изключение в JSP
Ето пример за това как да се справите с изключение в 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>
Обяснение на кода:
Exception_example.jsp
Кодов ред 1: Тук задаваме страницата за грешка на guru_error.jsp, която ще се използва, когато грешката бъде пренасочена.
Кодов ред 15: вземаме променлива num и я настройваме на 10 и проверяваме условие, ако num е 10, за да хвърлим изключение по време на изпълнение със съобщението като условие за грешка.
Guru_error.jsp
Кодов ред 1: Тук задаваме isErrorPageattribute на true.
Кодов ред 12: Изключението е повдигнато в exception_example.jsp с помощта на обект за изхвърляне и това изключение ще бъде показано тук, тъй като атрибутът IsErrorPage е маркиран като true. Използвайки обекта за изключение (това е обект, който позволява данните за изключение да бъдат достъпни от JSP.) се опитваме да отпечатаме следата на стека на грешката, възникнала в exception_example.jsp.
Когато изпълните горния код, получавате следния изход:
Изход:
Изключението беше повдигнато, което беше хвърлено от exception_example.jsp с помощта на обект за изхвърляне на изключение по време на изпълнение и получаваме горния код. Също така се извиква guru_error.jsp, от който е възникнало изключение на Guru от този файл.
Oбобщение
- Изключенията в JSP възникват, когато има грешка в кода или от разработчика, или вътрешна грешка от системата.
- Изключенията в JSP са от 3 типа: проверени изключения, изключения по време на изпълнение и изключения за грешки
- Провереното изключение обикновено е потребителска грешка или проблеми, които не се виждат от разработчика, се наричат проверени изключения.
- Изключенията по време на изпълнение са тези, които програмистът е могъл да избегне. Те се игнорират по време на компилация.
- Изключението за грешка е екземпляр на класа за изхвърляне и се използва в страниците за грешки.