عوامل التحكم بالأخطاء في PHP

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

تدعم 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()‎ والقسم الخاص بمعالجة الأخطاء ودوال التسجيل في هذا الدليل.

تحذير: سيعطّل عامل التحكم بالأخطاء "@" الإبلاغ عن الأخطاء الخطرة والتي تؤدي إلى إيقاف تنفيذ الشيفرة. سيؤدي ذلك إلى حدوث أمور عدة منها أنّه إن استخدم العامل "@" لإخفاء الأخطاء من دالة معينة وكانت الدالة غير متوفّرة أو كان هناك خطأ في كتابتها، فإن الشيفرة ستتوقف عن التنفيذ دون وجود أي دليل على سبب التوقف.

مصادر