محاولة اللحاق ...
الكتل الصيد محاولة تسمح لك لمعالجة الاستثناءات في الطريقة التي تسيطر عليها. لكن في حين أن هذه الكتل سوف الصيد خطأ والأمر متروك لك للتعامل معها بشكل صحيح. هو أفضل بكثير لوقف حدوث خطأ بدلا من اللحاق به بعد ذلك لم يقع السبب الأول في ذلك هو أنه يجعل التعليمات البرمجية، أكثر موثوقية عن طريق برمجة دفاعية. والسبب الثاني هو ان الامر يستغرق وقتا أطول لرمز للتعافي من استثناء حتى عندما يكون في المحاولة ... قبض على كتلة. فإن محاولة اللحاق كتلة الصيد والتعامل مع أية أخطاء داخل كتلة المحاولة.
person = null ; $ شخص = فارغة؛
محاولة
{
$ person - > name ; صدى $ شخص -> الاسم؛
}
Exception $ ex ) قبض على (استثناء $ السابقين)
{
" An error occured : " . $ ex - > getMessage ( ) ; صدى "حدث خطأ". $ السابقين -> getMessage ()؛
}
يتم اكتشاف ذلك فوق استثناء فارغة على المتغير $ شخص. يمكنك رمي استثناء من خلال خلق كائن استثناء جديد، مثل ذلك ...
person = null ; $ شخص = فارغة؛
.
.
.
$ person ) إذا (! $ شخص)
{
Exception ( " The person object can ' t be null . " ) ; رمي استثناء جديد ("كائن شخص يمكن 'ر يكون لاغيا.")؛
}
يمكنك أيضا تحديد أنواع استثناء الخاص بها، على سبيل المثال نوع لرمز قاعدة البيانات الخاصة بك. ذلك شيء من هذا القبيل.
DatabaseException extends Exception فئة DatabaseException تمتد استثناء
{
Make the message parameter required , and hide the code parameter / / جعل المعلمة الرسالة المطلوبة، وإخفاء المعلمة رمز
__construct ( $ message ) { وظيفة عامة التركيبة __ ($ رسالة) {
__construct ( $ message , 0 ) ; الأم التركيبة __ :: ($ رسالة، 0)؛
}
To change the string output override this / / لتغيير انتاج سلسلة تجاوز هذا
__toString ( ) { جمهور toString __ وظيفة () {
" An error occured in your database , the error is : { $ this - > message } n " ; عودة "حدث خطأ في قاعدة البيانات، الخطأ هو: {$ هذا -> رسالة} ن"؛
}
}
بواسطة تجاوز وظيفة
toString __ انه يسمح ليتم تعديل النص الذي هو الإخراج إلى الشاشة. ويمكن بعد هذا أن يسمى بالطريقة التالية ...
DatabaseException ( " Invalid SQL query . " ) ; رمي جديد DatabaseException ("استعلام SQL غير صالح.")؛
ويمكن عند اصطياد الأخطاء أكثر من كتلة واحدة الصيد يكون حاضرا لكتلة المحاولة، بحيث يمكن التعامل مع استثناءات مختلفة وبطرق مختلفة.
محاولة
{
/ *
Code to catch * قانون لصيد
* /
}
DatabaseException $ e ) قبض على (DatabaseException $ ه)
{
" An error occured : " . $ e - > getMessage ( ) ; صدى "حدث خطأ:" $ ه -> getMessage ()؛.
}
Exception $ e ) قبض على (استثناء $ ه)
{
/ *
Log general exception * سجل استثناء عام
* /
}
وكما ترون من فوق استثناءات عامة يتم تسجيل وتظهر استثناءات قاعدة بيانات على الشاشة. وإذا لم يتم القبض على استثناء يتم طرح خطأ فادح من قبل PHP. يمكنك التقاط استثناء uncaught في PHP باستخدام الدالة
set_exception_handler.
HandleException ( $ exception ) HandleException وظيفة ($ استثناء)
{
' header . php ' ) ; وتشمل ('رأس PHP.')؛
' errorPage . php ' ) ; وتشمل ('errorPage PHP.')؛
" An error occured when trying to carry out your request . nnThe error is : " , $ exception - > getMessage ( ) , " n " ; صدى "حدث خطأ عند محاولة تنفيذ طلبك nnThe الخطأ هو:."، $ استثناء -> getMessage ()، "ن"؛
' footer . php ' ) ; وتشمل ('تذييل PHP.')؛
}
' HandleException ' ) ; set_exception_handler ('HandleException')؛
ولذلك وكما ترون أعلاه وظيفة set_exception_handler يتم تمرير وظيفة HandleException كمعلمة الذي سيدعو ما إذا كان يحدث خطأ. في هذه الحالة وظيفة HandleException يدعو القوالب اللازمة لإظهار خطأ لطيفة اشتعلت الصفحة للمستخدم. فمن المستحسن أن تقوم بتنفيذ معالج استثناء في قانون الأساسي الخاص بك من موقع الويب الخاص بك للتأكد من أن المستخدم لا يتم عرض أي رسائل خطأ قبيح.
لا وقدمت تعليق.
كتبه الدباغ دومينيك
آخر تحديث: 2011/10/25 16:00:38