ما هو بناء معالجة الاستثناء
الخطأ لم يتم اكتشاف ، وذلك لأن معالجة الاستثناء المركبة ليست بعد في الواقع ، ويرى المستخدم رسالة الخطأ القياسي. قبل أن تتمكن من القبض على خطأ ، يجب أن أقول كولد فيوجن في محاولة للقبض على خطأ :
CFTRY يروي كولد فيوجن لمشاهدة كتلة المغلقة من رمز للأخطاء ، ويروي CFCATCH كولد فيوجن ماذا أفعل إذا حدث خطأ. CFCATCH نوع = "أي" يروي كولد فيوجن أن يتسبب أي خطأ في التنفيذ لتمرير قانون في غضون ذلك CFCATCH كتلة معينة. CFCATCH يأخذ سمة مسماة نوع واحد ، والذي يحدد نوع الخطأ التي يتم صيدها. إذا كنت تريد التقاط أخطاء قاعدة البيانات فقط ، على سبيل المثال ، يمكنك استخدام التعليمات البرمجية التالية :
إذا كنت تستخدم هذا CFTRY / CFCATCH بناء ، وكلها أخطاء قاعدة البيانات اكتشاف ويتم معالجتها بواسطة رمز داخل CFCATCH الزوج العلامة ، وجميع الأخطاء nondatabase خلال الخريف الى المستوى التالي في التطبيق الخاص بك استثناء إطار منظم للمناولة. عن طريق تحديد نوع الاستثناء متقدمة كوسيطة لCFCATCH من نوع السمة ، يمكنك التقاط ومعالجة أخطاء محددة جدا التي تحدث خارج حدود كولد فيوجن خادم ، وجدوى وجود هذا الخطأ أنواع كثيرة بأن ما تتمتعون به هو معالجة الاستثناء المركبة بشكل حبيبي لا يمكن الرد على كل اكتب بطريقة معينة. هل يمكن ، على سبيل المثال ، يكون معالج استثناء أن المصيد نوعين مختلفين ، وتتعامل معها بطريقتين مختلفتين ، على النحو التالي :
المثال السابق المصيد إما خطأ في قاعدة البيانات أو خطأ في التعبير والنواتج رسالة مختلفة اعتمادا على واحدة. إذا لم يكن الخطأ في قاعدة بيانات أو الخطأ التعبير ، والخطأ لم يتم اكتشاف ويرى المستخدم الرسالة القياسية الانتاج. CFCATCH نوع = "أي" لا تستطيع التقاط نوع واحد من الخطأ. على وجه التحديد ، اكتب = "أي" المصيد أي خطأ المستمدة من جاوة java.lang.Exception الطبقة. نوع = "أي" لا ، إلا أن الأخطاء الناجمة عن الصيد java.lang.Throwable. للقبض على هذه الأخطاء ، يجب عليك تعريف خاص CFCATCH ، على النحو التالي :
كنت نادرا ما تصادف هذا النوع لأن أيا من السمات القياسية كولد فيوجن بطرح هذا النوع من الأخطاء. وربما تشعر بالدهشة عندما علمت أن ذلك لم تتمكن من التقاط بعض الأخطاء على الإطلاق. البرمجية التالية ، على سبيل المثال ، يرمي خطأ بغض النظر عن CFTRY المحيطة رمز سيئة :
وCFSET لا يمتلك أي محتوى ، ولذا كولد فيوجن رميات خطأ تفيد ، غير صالح CFML بانشاء خط العثور على 9 في العمود 7. هذه النتيجة قد تبدو غريبة ، ولكن ، لأن لديك CFTRY وCFCATCH نوع = "أي". المشكلة هنا هي أن CFSET سوء خلق compiletime الخطأ ، والتي لا يمكن ضبط مع CFCATCH. CFCATCH يمكن التقاط فقط خطأ وقت التشغيل ، والذي يحدث أثناء تنفيذ القالب. في حالة المقتطف السابق ، لا يمكن أن كولد فيوجن بنجاح تحليل وترجمة الصفحة ، وبالتالي فإن معالجة الاستثناء لا تصبح نافذة المفعول. إذا كنت لCFINCLUDE صفحة مع ترجمة في الوقت الخطأ ، ويمكن التقاط الصفحة استدعاء قالب نوع الخطأ. هذا أمر نادر الحدوث ، ويجب الحرص على عدم الاعتماد على معالجة الاستثناء للقبض على تجميع أخطاء وقت. ان الجواب القصير هو أي شيء! يمكنك التعامل مع أي خطأ في الطريقة التي تراها مناسبة ، من تجاهله تماما لأنها تدرس في تفاصيله ، لتحويل مسار للمستخدم بديل القالب. تفعله عادة واحد من أمرين ، ولكن. إما إعادة توجيه المستخدم إلى صفحة مختلفة أو عرض من قبل المستخدم رسالة ودية يقولون له ما حدث. يمكنك متابعة أي من اثنين من الفلسفات في إعادة توجيه المستخدم. الأول هو أن يكون هناك خطأ محددة لكل صفحة الخطأ التي يمكن أن تحدث ، وإعادة توجيه المستخدم إلى أن صفحة معينة ، كما في المثال التالي :
الجانب السلبي لهذا النهج هو أنه لا يمكنك ان تقول بالضبط ما حدث ولماذا. والخيار الأفضل هو إعادة توجيه المستخدم إلى صفحة خطأ ، ولكن لتمرير رسالة خطأ في العنوان ، على النحو التالي :
بتمرير هذا الرمز رسالة خطأ تفصيلية معلمة في عنوان الموقع على صفحة الخطأ. ثمة خيار آخر هو لمباشرة عرض بعض النوع من الرسائل بدلا من إعادة توجيه المستخدم ، على النحو التالي :
قد تلاحظ أن رمز السابق يضيف CFABORT بعد الرسالة ، التي لا تريد للصفحة errored لمتابعة التنفيذ بعد حدوث خطأ. الخيار النهائي الذي نادرا ما يستخدم هو تجاهل الخطأ. عادة ما يكون هذا مناسبا إلا إذا كنت تتوقع أن يحدث خطأ ، ولكن لا يهم ما إذا كنت لحدوث خطأ أم لا ، كما يظهر رمز التالي :
إذا كنت تجاهل خطأ ، واضاف تعليقا على كتلة CFCATCH عادة فكرة جيدة بحيث أنك لا يخلط اذا ذهبت الى الوراء وتقرأ الشفرة الخاصة بك في وقت لاحق. وتكون على علم بأن تجاهل خطأ يمكن أن تكون خطرة ، لأنه قد ينتهي بهم الأمر دون قصد اصطياد خطأ أكثر خطورة من تلك التي كنت تتوقع. تسجيل ما لا يقل عن الخطأ باستخدام CFLOG قد تكون فكرة جيدة ، حتى لو كنت تخطط لتجاهله ، كما في المثال التالي :
بهذه الطريقة ، يمكنك مراجعة الخطأ المحددة في ملف السجل. مقال مقدم من خوسيه Carreto تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات. المهم : هذه المادة "ما هو استثناء المركبة معالجة ترجم" عن طريق البرامج أوتوماتيكيا. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.
|
|||||
| Online: 179 users browsing the articles directory |
|
|