معالجة الاستثناءات في JSP

⚡ ملخص ذكي

تتولى معالجة الاستثناءات في JSP إدارة الأخطاء التي تحدث أثناء تنفيذ التعليمات البرمجية، على غرار Java تُصنَّف الاستثناءات إلى ثلاثة أنواع: مُدقَّقة، ووقت التشغيل، وخطأ. تستخدم صفحات JSP سمات errorPage و isErrorPage لإعادة توجيه الاستثناءات وعرضها.

  • ⚠️ تم تعريف الاستثناء: حدث خطأ أثناء تنفيذ JSP، وتم التعامل معه على النحو التالي: Java محاولة التقاط الكرة.
  • 🗂️ ثلاثة أنواع: تم التحقق من الاستثناءات، واستثناءات وقت التشغيل، واستثناءات الأخطاء.
  • 🧾 تم التحقق من: يجب معالجة استثناءات FileNotFoundException و IOException و SQLException.
  • 🧨 وقت التشغيل: ArrayIndexOutOfBounds و ArithmeticException و NullPointerException.
  • 🛟 صفحة الخطأ / isErrorPage: إعادة توجيه الأخطاء إلى صفحة تعرض تفاصيل الاستثناء. trace.

معالجة الاستثناءات في JSP

ما هو الاستثناء في JSP؟

الاستثناءات في JSP تحدث عندما يكون هناك خطأ في التعليمات البرمجية إما من قبل المطور أو خطأ داخلي من النظام. معالجة الاستثناءات في JSP هي نفسها كما في Java حيث ندير الاستثناءات باستخدام كتل Try Catch. على عكس Java، هناك استثناءات في JSP أيضًا عندما لا يكون هناك خطأ في الكود.

أنواع الاستثناءات في JSP

الاستثناءات في JSP هي من ثلاثة أنواع:

  1. استثناء محدد
  2. استثناء وقت التشغيل
  3. استثناء الخطأ

فحص الاستثناءات

عادةً ما يكون هذا خطأً للمستخدم أو مشكلات لا يراها المطور، وتُسمى استثناءات مُراجعة. ومن أمثلة الاستثناءات المُراجعة:

  1. FileNotFoundException: هذا استثناء محدد (حيث يحاول العثور على ملف عندما لا يتم العثور على الملف على القرص).
  2. استثناء الإدخال والإخراج: يتم تحديد هذا الاستثناء أيضًا إذا حدث أي استثناء أثناء قراءة ملف أو كتابته، فسيتم رفع استثناء الإدخال والإخراج.
  3. SQLException:هذا أيضًا استثناء تم فحصه عند توصيل الملف بـ SQL قاعدة البيانات، وهناك مشكلة في الاتصال بقاعدة بيانات SQL ثم يتم رفع SQLException

استثناءات وقت التشغيل

استثناءات وقت التشغيل هي تلك التي كان من الممكن للمبرمج تجنبها. يتم تجاهلها في وقت التجميع. بعض أمثلة استثناءات وقت التشغيل هي:

  1. مؤشر مجموعة خارج الحدود استثناء: يعد هذا استثناءً لوقت التشغيل عندما يتجاوز حجم المصفوفة عناصر.
  2. استثناء حسابي:يعد هذا أيضًا استثناء وقت التشغيل عندما تكون هناك أي عمليات حسابية غير مسموح بها في الظروف العادية، على سبيل المثال، قسمة رقم على 0 سيؤدي إلى حدوث استثناء.
  3. استثناء NullPointer: يعد هذا أيضًا استثناءً لوقت التشغيل والذي يظهر عندما يكون متغير أو كائن فارغًا عندما نحاول الوصول إليه. هذا استثناء شائع جدًا.

الأخطاء:

تنشأ المشكلة بسبب تحكم المستخدم أو المبرمج. إذا تجاوزت المكدس الحد، فقد يحدث خطأ. فيما يلي بعض الأمثلة على الخطأ:

  1. خطأ: هذا الخطأ هو فئة فرعية قابلة للرمي والتي تشير إلى مشاكل خطيرة لا يمكن للتطبيق اكتشافها.
  2. خطأ في إنشاء مثيل: يحدث هذا الخطأ عندما نحاول إنشاء كائن، ويفشل في القيام بذلك.
  3. خطأ داخلي: يحدث هذا الخطأ عندما يحدث خطأ من 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.

عند تنفيذ الكود أعلاه، ستحصل على الناتج التالي:

التعامل مع الاستثناء في JSP

الإخراج:

تم طرح استثناء من الملف exception_example.jsp باستخدام كائن throw الخاص باستثناء وقت التشغيل، وحصلنا على الكود المذكور أعلاه. كما تم استدعاء الملف guru_error.jsp منه. Guru حدث خطأ في هذا الملف.

الأسئلة الشائعة

استثناءات JSP هي استثناءات تم التحقق منها (مثل FileNotFoundException و IOException و SQLException)، واستثناءات وقت التشغيل (مثل ArrayIndexOutOfBounds و ArithmeticException و NullPointerException)، والأخطاء (مثل تجاوز سعة المكدس وأخطاء JVM الداخلية).

تُحدد السمة errorPage الصفحة التي يجب إعادة توجيه الاستثناء إليها. أما السمة isErrorPage، التي تُضبط على القيمة true في تلك الصفحة المستهدفة، فتُمكّنها من الوصول إلى الكائن الضمني للاستثناء وعرض الخطأ.

الكائن الضمني للاستثناء هو نسخة من Throwable متاحة فقط في صفحات الخطأ (isErrorPage=true). وهو يعرض طرقًا مثل getMessage() و getCause() و printStackTrace() للإبلاغ عن الخطأ.

يمكن للذكاء الاصطناعي قراءة مكدس البيانات tracأي، تحديد الخط المعطل، وشرح السبب الجذري بلغة بسيطة، واقتراح حل، والمساعدةping يقوم المطورون بحل استثناءات JSP بشكل أسرع أثناء الاختبار ومراجعة التعليمات البرمجية.

نعم. يمكن للذكاء الاصطناعي أن يوصي بمكان إضافة كتل try-catch أو صفحة خطأ، وإنشاء صفحة خطأ قابلة لإعادة الاستخدام، ووضع علامة على الاستثناءات التي تم التحقق منها والتي لم تتم معالجتها، مما يحسن من متانة تطبيقات JSP.

تلخيص هذه التدوينة بـ: