الفرق بين المراجعتين لصفحة: «PHP/errorcontrol operators»

من موسوعة حسوب
< PHP
ط استبدال النص - 'PHP/Expressions' ب'PHP/expressions'
تعديلات طفيفة
 
(4 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 2: سطر 2:
تدعم PHP عاملًا واحدًا للتحكّم بالأخطاء وهو علامة (@). تتجاهل PHP جميع الأخطاء الناتجة من أي تعبير تُلحق به هذه العلامة.
تدعم PHP عاملًا واحدًا للتحكّم بالأخطاء وهو علامة (@). تتجاهل PHP جميع الأخطاء الناتجة من أي تعبير تُلحق به هذه العلامة.


إن كنت قد عينت دالة خاصة للتعامل مع الأخطاء باستخدام [[PHP/Function/set-error-handler|<code>set_error_handler()</code>‎]] فستستدعى تلك الدالة حتى مع استخدام هذا العامل، ولكن يمكن للدالة الخاصة (بل ويجدر بها) أن تستدعي الدالة <code>[[PHP/Function/error-reporting|error_reporting()‎]]</code> والتي ستعيد 0 عندما يكون الاستدعاء المتسبب في حدوث الخطأ مسبوقًا بعلامة @.
إن كنت قد عينت دالة خاصة للتعامل مع الأخطاء باستخدام [[PHP/set_error_handler|<code>set_error_handler()</code>‎]] فستستدعى تلك الدالة حتى مع استخدام هذا العامل، ولكن يمكن للدالة الخاصة (بل ويجدر بها) أن تستدعي الدالة <code>[[PHP/error_reporting|error_reporting()‎]]</code> والتي ستعيد 0 عندما يكون الاستدعاء المتسبب في حدوث الخطأ مسبوقًا بعلامة @.


إن كانت الخاصية <code>track_errors</code> مفعّلة فإن أيّ رسالة خطأ تنشأ من التعبير ستحفظ في المتغير <code>‎$php_errormsg</code>، وتعاد كتابة هذا المتغير مع كل خطأ، لذا تفحص قيمته في البداية إن كنت ترغب في استخدامه.
إن كانت الخاصية <code>track_errors</code> مفعّلة فإن أيّ رسالة خطأ تنشأ من التعبير ستحفظ في المتغير <code>‎$php_errormsg</code>، وتعاد كتابة هذا المتغير مع كل خطأ، لذا تفحص قيمته في البداية إن كنت ترغب في استخدامه.
سطر 22: سطر 22:
</syntaxhighlight>
</syntaxhighlight>


ملاحظة: يعمل العامل @ مع [[PHP/expressions|التعابير]] فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل المثال يمكن إلحاق العامل بالمتغيرات والدوال واستدعاءات التضمين <code>[[PHP/Function/include|include]]</code>، والثوابت وما إلى ذلك. ولا يمكن إلحاقه بتعريفات الدوال والأصناف، أو البنى الشرطية مثل <code>[[PHP/if|if]]</code> و <code>[[PHP/foreach|foreach]]</code> وما إلى ذلك.
ملاحظة: يعمل العامل @ مع [[PHP/expressions|التعابير]] فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل المثال، يمكن إلحاق العامل بالمتغيرات والدوال واستدعاءات التضمين <code>[[PHP/include|include]]</code>، والثوابت وما إلى ذلك. ولا يمكن إلحاقه بتعريفات الدوال والأصناف، أو البنى الشرطية مثل <code>[[PHP/if|if]]</code> و <code>[[PHP/foreach|foreach]]</code> وما إلى ذلك.


انظر كذلك إلى صفحة <code>[[PHP/Function/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()‎ والقسم الخاص بمعالجة الأخطاء ودوال التسجيل في هذا الدليل.

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

مصادر