Domanda

In un follow-up di un domanda precedente per quanto riguarda le eccezioni, quali sono le best practice per la creazione di un'eccezione personalizzata in .NET?

Più precisamente si dovrebbe ereditare dal Sistema.Eccezione, Di Sistema.ApplicationException o qualche altra eccezione base?

È stato utile?

Soluzione

Ereditare da System.Exception. System.ApplicationException è inutile e le linee guida per la progettazione dire "Non gettare o derivare da System.ApplicationException."

Vedere http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx

Altri suggerimenti

In C# IDE, tipo di 'eccezione' e premere il tasto TAB.Questo ci permetterà di espandere per iniziare a scrivere un nuovo tipo di eccezione.Non ci sono commenti con link a qualche discussione di eccezione pratiche.

Personalmente, sono un grande fan di creazione di un sacco di piccole classi, che si estende per tipi di eccezione.Per esempio, nello scrivere la classe Pippo, posso scegliere tra:

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

dove

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

e

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

Io preferisco la 3 ° opzione, perché la vedo come un OO soluzione.

C'è un frammento di codice per farlo.L'uso che.Inoltre, controllare il codice di analisi in seguito;il frammento lascia fuori uno dei costruttori implementare.

Penso che la cosa più importante da ricordare quando si tratta con le eccezioni di qualsiasi livello (personalizzate, lancio, la cattura) è che le eccezioni sono solo per condizioni eccezionali.

L'eccezione base da cui tutte le altre eccezioni sono ereditate dal Sistema.Eccezione, e questo è ciò che si dovrebbe ereditare, a meno che naturalmente si ha un uso per cose come, ad esempio, di default i messaggi di una più specifica eccezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top