دروس PHP

PHP الرئيسية مقدمة PHP تثبيت PHP بناء جملة PHP تعليقات PHP متغيرات PHP PHP صدى / طباعة أنواع بيانات PHP سلاسل PHP أرقام PHP PHP الرياضيات ثوابت PHP مشغلي PHP PHP إذا ... آخر ... Elseif مفتاح PHP حلقات PHP وظائف PHP مصفوفات PHP PHP Superglobals PHP RegEx

نماذج PHP

معالجة نموذج PHP التحقق من صحة نموذج PHP نموذج PHP مطلوب نموذج PHP URL / البريد الإلكتروني اكتمل نموذج PHP

PHP متقدم

تاريخ ووقت PHP تضمين PHP معالجة ملفات PHP فتح / قراءة ملف PHP إنشاء / كتابة ملف PHP تحميل ملف PHP ملفات تعريف الارتباط PHP جلسات PHP مرشحات PHP مرشحات PHP متقدم وظائف رد الاتصال PHP PHP JSON استثناءات PHP

PHP OOP

PHP ما هو OOP فئات / كائنات PHP منشئ PHP مدمر PHP معدِّلات الوصول إلى PHP الوراثة PHP ثوابت PHP فئات مجردة PHP واجهات PHP سمات PHP طرق PHP الثابتة خصائص PHP الثابتة مساحات أسماء PHP PHP تكرارات

قاعدة بيانات MySQL

قاعدة بيانات MySQL اتصال MySQL إنشاء قاعدة بيانات MySQL إنشاء جدول MySQL MySQL إدراج البيانات MySQL الحصول على آخر معرف إدراج عدة MySQL تم تجهيز MySQL MySQL حدد البيانات MySQL أين ترتيب MySQL حسب MySQL حذف البيانات تحديث بيانات MySQL بيانات MySQL المحدودة

لغة PHP XML

موزعي PHP XML محلل PHP SimpleXML PHP SimpleXML - احصل على PHP XML Expat PHP XML DOM

PHP - أجاكس

مقدمة أجاكس أجاكس بي إتش بي قاعدة بيانات أجاكس AJAX XML بحث أجاكس لايف استطلاع أجاكس

أمثلة PHP

أمثلة PHP مترجم PHP اختبار PHP تمارين PHP شهادة PHP

مرجع PHP

نظرة عامة على PHP صفيف PHP تقويم PHP تاريخ PHP دليل PHP خطأ PHP استثناء PHP نظام ملفات PHP مرشح PHP PHP FTP PHP JSON كلمات PHP PHP Libxml PHP Mail PHP الرياضيات متفرقات PHP PHP MySQLi شبكة PHP التحكم في إخراج PHP PHP RegEx PHP SimpleXML PHP ستريم سلسلة PHP معالجة متغيرة PHP محلل PHP XML PHP Zip المناطق الزمنية PHP

استثناءات PHP


ما هو الاستثناء؟

الاستثناء هو كائن يصف خطأ أو سلوكًا غير متوقع لبرنامج نصي PHP.

تم طرح الاستثناءات بواسطة العديد من وظائف وفئات PHP.

يمكن أيضًا للوظائف والفئات التي يحددها المستخدم طرح استثناءات.

تعتبر الاستثناءات طريقة جيدة لإيقاف دالة عندما تصادف بيانات لا يمكنها استخدامها.


رمي استثناء

تسمح throwالعبارة لوظيفة أو طريقة معرّفة من قبل المستخدم لطرح استثناء. عند طرح استثناء ، لن يتم تنفيذ الكود الذي يتبعه.

إذا لم يتم اكتشاف استثناء ، فسيحدث خطأ فادح مع رسالة "Uncaught Exception".

لنحاول طرح استثناء دون أن نلاحظه:

مثال

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?>

ستبدو النتيجة كما يلي:

Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

المحاولة ... بيان الصيد

لتجنب الخطأ من المثال أعلاه ، يمكننا استخدام try...catchالعبارة لالتقاط الاستثناءات ومتابعة العملية.

بناء الجملة

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
}

مثال

إظهار رسالة عند طرح استثناء:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

تشير كتلة catch إلى نوع الاستثناء الذي يجب اكتشافه واسم المتغير الذي يمكن استخدامه للوصول إلى الاستثناء. في المثال أعلاه ، نوع الاستثناء هو Exceptionواسم المتغير $e.


المحاولة ... المصيد ... أخيرا البيان

يمكن try...catch...finallyاستخدام العبارة لالتقاط الاستثناءات. سيتم دائمًا تشغيل التعليمات البرمجية الموجودة في finallyالكتلة بغض النظر عما إذا تم اكتشاف استثناء أم لا. إذا كان finallyموجودًا ، فإن catchالكتلة اختيارية.

بناء الجملة

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

مثال

اعرض رسالة عند طرح استثناء ثم أشر إلى انتهاء العملية:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide. ";
} finally {
  echo "Process complete.";
}
?>

مثال

إخراج سلسلة حتى إذا لم يتم اكتشاف استثناء:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} finally {
  echo "Process complete.";
}
?>

كائن الاستثناء

يحتوي "كائن الاستثناء" على معلومات حول الخطأ أو السلوك غير المتوقع الذي صادفته الوظيفة.

بناء الجملة

new Exception(message, code, previous)

قيمه المعامل

Parameter Description
message Optional. A string describing why the exception was thrown
code Optional. An integer that can be used used to easily distinguish this exception from others of the same type
previous Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter

طرق

عند اكتشاف استثناء ، يعرض الجدول التالي بعض الطرق التي يمكن استخدامها للحصول على معلومات حول الاستثناء:

Method Description
getMessage() Returns a string describing why the exception was thrown
getPrevious() If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null
getCode() Returns the exception code
getFile() Returns the full path of the file in which the exception was thrown
getLine() Returns the line number of the line of code which threw the exception

مثال

معلومات الإخراج حول استثناء تم طرحه:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero", 1);
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $ex) {
  $code = $ex->getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>

مرجع الاستثناء الكامل

للحصول على مرجع كامل ، انتقل إلى مرجع استثناءات PHP الكامل .

يحتوي المرجع على أوصاف وأمثلة لجميع طرق الاستثناء.