Welche Best Practices gibt es zum Erstellen meiner eigenen benutzerdefinierten Ausnahme?

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

  •  09-06-2019
  •  | 
  •  

Frage

Im Nachgang zu a vorherige Frage Was sind in Bezug auf Ausnahmen Best Practices zum Erstellen einer benutzerdefinierten Ausnahme in .NET?

Genauer gesagt, sollten Sie von System.Exception, System.ApplicationException oder einer anderen Basisausnahme erben?

War es hilfreich?

Lösung

Vererben von System.Exception. System.ApplicationException ist nutzlos, und die Design-Richtlinien sagen „ Nicht werfen oder aus System.ApplicationException abzuleiten.“

Siehe http://blogs.msdn.com/ kcwalina / Archiv / 2006/06/23 / 644822.aspx

Andere Tipps

In der C # IDE, Typ 'Ausnahme' und drücken Sie TAB. Dies wird erweitern, um Sie in das Schreiben eines neuen Ausnahmetyp loszulegen. Es gibt Kommentare withs Links zu einigen Diskussionen Ausnahme Praktiken.

Ich persönlich bin ein großer Fan von vielen kleinen Klassen zu schaffen, um das zu Ausnahmetypen erweitert. Um zum Beispiel der Foo-Klasse in schriftlicher Form, kann ich wählen zwischen:

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

Dabei steht

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

und

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

ziehe ich die dritte Option, weil ich es sehe wie eine OO-Lösung zu sein.

Es ist ein Code-Snippet für sie. Verwende das. Plus, überprüfen Sie die Codeanalyse danach; das Snippet verlässt einer der Konstrukteure sollten Sie implementieren.

Ich denke, die wichtigste Sache zu erinnern, wenn sie mit Ausnahmen auf jeder Ebene (was Brauch, Werfen, Fangen) zu tun ist, dass Ausnahmen nur für Ausnahmebedingungen sind.

Die Basis Ausnahme von dem alle anderen Ausnahmen erben von System.Exception ist, und das ist, was sollten Sie erben, außer natürlich, Sie eine Verwendung für Dinge wie, sagen wir, Standardmeldungen einer spezifischeren Ausnahme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top