الفرق بين المراجعتين ل"PHP/errorcontrol operators"
ط (استبدال النص - 'PHP\/([^|-]*)-([^|-]*)' ب'PHP/$1_$2') |
رؤيا-بنعطية (نقاش | مساهمات) (تعديلات طفيفة) |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 22: | سطر 22: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ملاحظة: يعمل العامل @ مع [[PHP/expressions|التعابير]] فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل | + | ملاحظة: يعمل العامل @ مع [[PHP/expressions|التعابير]] فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل المثال، يمكن إلحاق العامل بالمتغيرات والدوال واستدعاءات التضمين <code>[[PHP/include|include]]</code>، والثوابت وما إلى ذلك. ولا يمكن إلحاقه بتعريفات الدوال والأصناف، أو البنى الشرطية مثل <code>[[PHP/if|if]]</code> و <code>[[PHP/foreach|foreach]]</code> وما إلى ذلك. |
انظر كذلك إلى صفحة <code>[[PHP/error_reporting|error_reporting()]]</code> والقسم الخاص [[PHP/Error|بمعالجة الأخطاء ودوال التسجيل]] في هذا الدليل. | انظر كذلك إلى صفحة <code>[[PHP/error_reporting|error_reporting()]]</code> والقسم الخاص [[PHP/Error|بمعالجة الأخطاء ودوال التسجيل]] في هذا الدليل. |
المراجعة الحالية بتاريخ 16:31، 7 يونيو 2018
تدعم PHP عاملًا واحدًا للتحكّم بالأخطاء وهو علامة (@). تتجاهل PHP جميع الأخطاء الناتجة من أي تعبير تُلحق به هذه العلامة.
إن كنت قد عينت دالة خاصة للتعامل مع الأخطاء باستخدام set_error_handler()
فستستدعى تلك الدالة حتى مع استخدام هذا العامل، ولكن يمكن للدالة الخاصة (بل ويجدر بها) أن تستدعي الدالة error_reporting()
والتي ستعيد 0 عندما يكون الاستدعاء المتسبب في حدوث الخطأ مسبوقًا بعلامة @.
إن كانت الخاصية track_errors
مفعّلة فإن أيّ رسالة خطأ تنشأ من التعبير ستحفظ في المتغير $php_errormsg
، وتعاد كتابة هذا المتغير مع كل خطأ، لذا تفحص قيمته في البداية إن كنت ترغب في استخدامه.
<?php
// خطأ مقصود في الملف
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// يعمل هذا مع أي تعبير، وليس مع الدوال فقط:
$value = @$cache[$key];
// لن تنطلق ملاحظة إن كان الفهرس $key غير موجودٍ.
?>
ملاحظة: يعمل العامل @ مع التعابير فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل المثال، يمكن إلحاق العامل بالمتغيرات والدوال واستدعاءات التضمين include
، والثوابت وما إلى ذلك. ولا يمكن إلحاقه بتعريفات الدوال والأصناف، أو البنى الشرطية مثل if
و foreach
وما إلى ذلك.
انظر كذلك إلى صفحة error_reporting()
والقسم الخاص بمعالجة الأخطاء ودوال التسجيل في هذا الدليل.
تحذير: سيعطّل عامل التحكم بالأخطاء "@" الإبلاغ عن الأخطاء الخطرة والتي تؤدي إلى إيقاف تنفيذ الشيفرة. سيؤدي ذلك إلى حدوث أمور عدة منها أنّه إن استخدم العامل "@" لإخفاء الأخطاء من دالة معينة وكانت الدالة غير متوفّرة أو كان هناك خطأ في كتابتها، فإن الشيفرة ستتوقف عن التنفيذ دون وجود أي دليل على سبب التوقف.