معالجة الاستثناءات في JSP
⚡ ملخص ذكي
تتولى معالجة الاستثناءات في JSP إدارة الأخطاء التي تحدث أثناء تنفيذ التعليمات البرمجية، على غرار Java تُصنَّف الاستثناءات إلى ثلاثة أنواع: مُدقَّقة، ووقت التشغيل، وخطأ. تستخدم صفحات JSP سمات errorPage و isErrorPage لإعادة توجيه الاستثناءات وعرضها.
ما هو الاستثناء في JSP؟
الاستثناءات في JSP تحدث عندما يكون هناك خطأ في التعليمات البرمجية إما من قبل المطور أو خطأ داخلي من النظام. معالجة الاستثناءات في JSP هي نفسها كما في Java حيث ندير الاستثناءات باستخدام كتل Try Catch. على عكس Java، هناك استثناءات في JSP أيضًا عندما لا يكون هناك خطأ في الكود.
أنواع الاستثناءات في JSP
الاستثناءات في JSP هي من ثلاثة أنواع:
- استثناء محدد
- استثناء وقت التشغيل
- استثناء الخطأ
فحص الاستثناءات
عادةً ما يكون هذا خطأً للمستخدم أو مشكلات لا يراها المطور، وتُسمى استثناءات مُراجعة. ومن أمثلة الاستثناءات المُراجعة:
- FileNotFoundException: هذا استثناء محدد (حيث يحاول العثور على ملف عندما لا يتم العثور على الملف على القرص).
- استثناء الإدخال والإخراج: يتم تحديد هذا الاستثناء أيضًا إذا حدث أي استثناء أثناء قراءة ملف أو كتابته، فسيتم رفع استثناء الإدخال والإخراج.
- SQLException:هذا أيضًا استثناء تم فحصه عند توصيل الملف بـ SQL قاعدة البيانات، وهناك مشكلة في الاتصال بقاعدة بيانات SQL ثم يتم رفع SQLException
استثناءات وقت التشغيل
استثناءات وقت التشغيل هي تلك التي كان من الممكن للمبرمج تجنبها. يتم تجاهلها في وقت التجميع. بعض أمثلة استثناءات وقت التشغيل هي:
- مؤشر مجموعة خارج الحدود استثناء: يعد هذا استثناءً لوقت التشغيل عندما يتجاوز حجم المصفوفة عناصر.
- استثناء حسابي:يعد هذا أيضًا استثناء وقت التشغيل عندما تكون هناك أي عمليات حسابية غير مسموح بها في الظروف العادية، على سبيل المثال، قسمة رقم على 0 سيؤدي إلى حدوث استثناء.
- استثناء NullPointer: يعد هذا أيضًا استثناءً لوقت التشغيل والذي يظهر عندما يكون متغير أو كائن فارغًا عندما نحاول الوصول إليه. هذا استثناء شائع جدًا.
الأخطاء:
تنشأ المشكلة بسبب تحكم المستخدم أو المبرمج. إذا تجاوزت المكدس الحد، فقد يحدث خطأ. فيما يلي بعض الأمثلة على الخطأ:
- خطأ: هذا الخطأ هو فئة فرعية قابلة للرمي والتي تشير إلى مشاكل خطيرة لا يمكن للتطبيق اكتشافها.
- خطأ في إنشاء مثيل: يحدث هذا الخطأ عندما نحاول إنشاء كائن، ويفشل في القيام بذلك.
- خطأ داخلي: يحدث هذا الخطأ عندما يحدث خطأ من JVM، أي Java آلة افتراضية.
استثناءات الخطأ
إنها مثال لفئة throwable، وتُستخدم في صفحات الأخطاء. بعض طرق فئة throwable هي:
- سلسلة عامة 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. باستخدام كائن الاستثناء (وهو كائن يسمح لصفحة JSP بالوصول إلى بيانات الاستثناء)، نحاول طباعة تتبع الاستدعاء.trace من الخطأ الذي حدث في exception_example.jsp.
عند تنفيذ الكود أعلاه، ستحصل على الناتج التالي:
الإخراج:
تم طرح استثناء من الملف exception_example.jsp باستخدام كائن throw الخاص باستثناء وقت التشغيل، وحصلنا على الكود المذكور أعلاه. كما تم استدعاء الملف guru_error.jsp منه. Guru حدث خطأ في هذا الملف.


