Обработка на изключения в JSP
⚡ Умно обобщение
Обработката на изключения в JSP управлява грешки, които възникват по време на изпълнение на код, подобно на Java Блокове try-catch. Изключенията се делят на три типа: checked, runtime и error. JSP страниците използват атрибутите errorPage и isErrorPage за пренасочване и показване на изключения.

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

