2010-12-30 4 views
2

Es gibt einige Fälle, in denen wir uns nicht um die Exception kümmern und einfach weitermachen müssen. Ich weiß, dass es Nebenwirkungen und ...Beste C# -Syntax zum Ignorieren einer Ausnahme

Hier ist meine Frage über die beste C# Syntax für ein exception ignorieren, zum Beispiel:

try 
{ 
    // exceptional code 
} 
catch { } 

aber dies scheint ein wenig hässlich speziell, dass leeren Klammern nach catch . Gibt es eine elegantere Syntax?

+1

Ja, fügen Sie einen Kommentar hinzu, der erklärt, warum Sie es schlucken. – BoltClock

+0

Das mache ich. Ich sehe nicht, wie du es viel eleganter machen kannst. –

+0

Nun, fügen Sie zumindest eine Ablaufverfolgung im catch-Block hinzu. –

Antwort

1

Wahrscheinlich nicht der beste Weg, aber man könnte dies eine wenig aussagekräftiger sein tun:

try 
{ 
    // exceptional code 
} 
catch (Exception ex) 
{ 
} 

Aber ich denke, die leeren Klammern die gleiche Nachricht an wem auch immer ist die Aufrechterhaltung dieses in der Zukunft zu vermitteln.

Besser noch wäre es, Ihren außergewöhnlichen Code zu refaktorieren. Wenn Sie eine Ausnahme ignorieren, besteht die Möglichkeit, dass sie (und sollte) besser durchgeführt werden kann.

+2

Wird 'continue' nicht eine Schleifenkontrollanweisung sein, wenn dieser' try' Block innerhalb einer Schleife ist? Und ein Syntaxfehler, wenn es nicht ist? –

+0

Das ist wahr. Guter Punkt. – karlgrz

+0

Ich stimme auch nicht ganz mit der letzten Zeile überein. Manchmal (selten werde ich zugeben) ist es dir ehrlich gesagt egal und du kannst sicher über eine Ausnahme hinweggehen. Das heißt, ich erinnere mich nicht, jemals so etwas im Produktionscode gemacht zu haben, nur interne Sachen. –

2

Ummm .. Ich denke nicht, dass es etwas "unelegant" über die zwei Klammern (die Tatsache, dass Sie Ausnahmen mit nicht so sehr verschlucken, als ein Kommentar ist). Sie müssen sich bessere Sorgen machen.

+2

* Sie müssen sich um bessere Probleme kümmern *. +1 –

4

Sie sollten nie eine leere catch Anweisung wie diese haben. Einen Fehler im Code zu haben und es nicht einmal zu bemerken, ist schlimmer als nur einen Fehler im Code zu haben.

Wenn Sie Ausnahmen fangen wollen und ignorieren sie wirklich versuchen, nur die Art der Ausnahme zu fangen, die Sie ignorieren möchten, und einen Kommentar über den Grund fügen Sie es zu ignorieren:

try { 
    // exceptional code... 
} catch(FormatException) { 
    // A comment describing why on earth you are cathing 
    // an exception and ignoring it. 
} 
0

Ich denke Konvention Wenn Sie Ausnahmen ignorieren, ignorieren Sie in der Regel Ausnahmen eines bestimmten Typs und stellen zumindest eine Behandlung für System.Exception bereit. Wie auch immer, ich würde im Catch dokumentieren, warum die entsprechende Ausnahme ignoriert wird.

try { 

    ... exceptional code 

} catch (InvalidOperationException ex) { 
    // This exception can be ignored because .. 
} catch (Exception ex) { 
    ... error handling code 
} 
0

können Sie Spring.NET verwenden AOP

Exception Handler Advice

Auszüge aus dem Link

Die Quelle Ausnahmen Verarbeitung auf ausführen aufgelistet unmittelbar nach dem Stichwort 'auf' und kann comma delmited sein. Danach ist die auszuführende Aktion entweder log, translate, wrap, replace, return oder schlucken.

Verwandte Themen