ما هي بعض أفضل الممارسات لإنشاء بلدي مخصص استثناء ؟

StackOverflow https://stackoverflow.com/questions/54851

  •  09-06-2019
  •  | 
  •  

سؤال

في متابعة السؤال السابق فيما يتعلق بالاستثناءات ، ما هي أفضل الممارسات من أجل إنشاء مخصص استثناء .الشبكة ؟

وبشكل أكثر تحديدا يجب أن ترث من النظام.استثناء System.ApplicationException أو قاعدة استثناء ؟

هل كانت مفيدة؟

المحلول

ترث من System.Exception. System.ApplicationException لا طائل منه و تصميم المبادئ التوجيهية يقول "لا رمي أو مستمدة من System.ApplicationException."

انظر http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx

نصائح أخرى

في C# IDE نوع 'استثناء' وضرب علامة التبويب.وهذا التوسع للحصول على أنك بدأت في كتابة جديدة نوع الاستثناء.هناك تعليقات withs روابط لبعض مناقشة استثناء الممارسات.

شخصيا أنا معجب كبير من خلق الكثير من فئات صغيرة, على أن يمتد إلى استثناء أنواع.على سبيل المثال ، في كتابة فو الدرس يمكن أن تختار بين:

  1. throw new Exception("Bar happened in Foo");
  2. throw new FooException("Bar happened");
  3. throw new FooBarException();

حيث

class FooException : Exception 
{
    public FooException(string message) ... 
}

و

class FooBarException : FooException 
{
    public FooBarException() 
        : base ("Bar happened") 
    {
    }
}

أنا أفضل الخيار 3 ، لأنني أرى أنها كونه OO الحل.

هناك البرمجية المتكررة لذلك.استخدام هذا.بالاضافة الى ذلك, تحقق من رمز تحليل بعد ذلك ، مقتطف يترك أحد منشئات يجب أن تنفذ.

أعتقد أن أهم شيء أن نتذكر عند التعامل مع الاستثناءات في أي مستوى (صنع العرف ، رمي ، اصطياد) هو أن الاستثناءات هي فقط ظروف استثنائية.

قاعدة استثناء من حيث كل استثناءات أخرى ترث من النظام.استثناء, وهذا هو ما يجب أن ترث, ما لم يكن بالطبع لديك استخدام أشياء مثل افتراضي رسائل أكثر تحديدا استثناء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top