ca1065: قم برفع الاستثناءات في مواقع? غير متوقع لا
TypeName |
DoNotRaiseExceptionsInUnexpectedLocations |
CheckId |
ca1065 |
Category |
Microsoft.تصميم |
تعطيل تغيير |
غير فاصلة |
السبب
أسلوب الذي هو ليس من المتوقع أن يقوم بطرح استثناء throws استثناء.
وصف القاعدة
أساليب غير متوقع إلى يرمي يتم مصنف الاستثناءات كما يلي:
وظائف يحصل خاصية
وظائف واصف الوصول حدث
يساوي وظائف
وظائف GetHashCode
وظائف ToString
ثابت المنشئات
finalizers
التخلص من وظائف
عوامل تشغيل المساواة
عوامل تشغيل حالة الضمني
تناقش المقاطع التالية هذه الطريقة أنواع.
وظائف يحصل خاصية
خصائص حقول ذكية بشكل أساسي. ولذلك، يجب أن تسلك حقل كـ كثير كـ المحتملة. حقول لا يقوم بطرح الاستثناءات و غير أن الخصائص. إذا كان لديك خاصية يطرح إستثناء، خذ بعين الاعتبار مما يجعل أسلوب.
يتم السماح باستثناء ما يلي أن تم طرح من خاصية الحصول على أسلوب:
System.InvalidOperationExceptionو الجميع derivatives (بما في ذلك System.ObjectDisposedException)
System.NotSupportedExceptionو derivatives كافة
System.ArgumentException(فقط من يحصل المفهرسة)
KeyNotFoundException(فقط من يحصل المفهرسة)
وظائف واصف الوصول حدث
يجب أن يكون حدث accessors العمليات البسيطة التي لا رمى استثناءات. لا يقوم حدث طرح استثناء عند محاولة إلى إضافة أو إزالة معالج حدث.
يتم السماح باستثناء ما يلي أن تم طرح من accesor حدث:
System.InvalidOperationExceptionو الجميع derivatives (بما في ذلك System.ObjectDisposedException)
System.NotSupportedExceptionو derivatives كافة
ArgumentExceptionو derivatives
يساوي وظائف
التالي يساوي وظائف يجب أن لا يقوم بطرح الاستثناءات:
يجب أن تعود يساوي أسلوب trueأو falseبدلاً من طرح إستثناء. على سبيل المثال، إذا كان يساوي هو الأنواع التي تم تمريرها mهوmatched اثنين فإنه يجب فقط إرجاع falseبدلاً من طرح ArgumentException.
وظائف GetHashCode
التالي من GetHashCode وظائف يجب عادة الإلقاء غير الاستثناءات:
GetHashCode يجب أن دوماً بإرجاع القيمة. وإلا، يمكن أن تفقد عناصر في جدول التجزئة.
أن الإصدارات من GetHashCodeالتي تأخذ وسيطة رمى ArgumentException. على الرغم من ذلك، يجب عدم طرح من كائن.GetHashCode إستثناء.
وظائف ToString
يستخدم مصحح الأخطاء Object.ToStringإلى المساعدة في عرض معلومات حول الكائنات في سلسلة التنسيق. ولذلك، ToString يجب تغيير الولاية الكائن و يجب أن لا الإلقاء الاستثناءات.
ثابت المنشئات
طرح استثناءات من على الدالة الإنشائية ثابت يؤدي إلى النوع لتكون غير قابل للاستخدام في مجال تطبيق الحالي. يجب أن يكون لديك reكـon جيد جداً (مثل كـ مشكلة) لطرح استثناء من على الدالة الإنشائية ثابتة.
finalizers
قم بطرح استثناء من أداة الإنهاء يؤدي CLR إلى فشل سريعة، التي tears باستمرار للعملية. ولذلك، بطرح الاستثناءات في أداة الإنهاء يجب أن دوماً يمكن تجنب.
التخلص من وظائف
IDisposable.Disposeلا يجب طرح أسلوب إستثناء. Dهوpose هو يدعى غالباً كجزء من نظيف منطق في finallyجملة. ولذلك، بوضوح إلقاء إستثناء من تخلص يفرض على مستخدم بإضافة استثناء معالجة داخل finallyجملة.
لا يقوم مسار الرمز Dهوpose(خطأ) الإلقاء الاستثناءات، لأن ترتيب هو هو تسمى دائماً من أداة الإنهاء.
عوامل تشغيل المساواة (= =،! =)
في أسلوب يساوي, مساواة عوامل تشغيل يجب أن تعود أما trueأو falseويجب عدم طرح الاستثناءات.
عوامل تشغيل الممثلون ضمني
لأن مستخدم معرفة أن عامل تشغيل الإضافة ضمني قد تم استدعاء، باستثناء غالباً تم طرح عن طريق شكل ضمني عامل تحويل غير متوقع بالكامل. ولذلك، يجب أن يتم طرح أية استثناءات من العوامل الضمنية لفريق العمل.
كيف إلى الإصلاح انتهاكات
لخاصية getters، أما تغيير المنطق حيث لا يتضمن في قم بطرح استثناء، أو قم بتغيير خاصية في في أسلوب.
بالنسبة لكافة غير ذلك أنواع الطريقة المذكورة سابقا، غير المنطق بحيث يقوم فلا يجب طرح استثناء.
عند إلى منع التحذيرات
هو الأمن لمنع ظهور تحذير من القيم بالموضع هو قاعدة إذا كان الخرق تم بسبب إعلان استثناء عوضاً استثناء تم طرح.
القواعد ذات الصلة
ca2219: قم برفع الاستثناءات في عبارات استثناء لا