2011-01-08 7 views
0

Welche ist eine gute Kombination mit UI-Ebenen Try-Catch und eine gute Übung in der n-Tier-Anwendung und warum?Praxis in der Verwendung von Try-Catch-finally

1.

try 
    { 
    //Statements 
    } 
    catch 
    { 
     throw 
    } 
    finally 
    { 
    //cleanup codes 
    } 

OR

2.

try 
    { 
     // statements 
    } 
    catch(Exception ex) 
    { 
    } 
    finally 
    { 
    // clean up 
    } 

und in UI-Schicht

try{ 
} 
catch(Exception ex) 
{ 
Log(ex); 
} 
finally 
{ 
    //clean up 
} 
+2

mögliche Duplikate von [Wo Versuch zu fangen] (http://stackoverflow.com/questions/523875/where-to-put-try-catch) – slugster

+1

Auch hier behandelt: [Wie und wo schreiben wir versuchen zu fangen block to handle Exception] (http://stackoverflow.com/questions/2430823/how-and-where-do-we-write-try-catch-block-to-handle-exception). Dies waren nur zwei Fragen, die ich aus dem Panel "Verwandte Fragen" auf der rechten Seite ausgewählt habe, ohne selbst eine Suche durchzuführen. – slugster

+0

Was auch immer Sie tun, wo es "Aufräumen" bedeutet, deutet darauf hin, dass das Ganze durch eine 'using'-Anweisung ersetzt werden sollte. –

Antwort

2

In der ersten, die catch und throw völlig sinnlos ist, sollten Sie eine try und finally, wenn Sie die Bereinigung verwenden nur sicherstellen wollen.

Die zweite ist gefährlich und sollte nie benutzt werden. Der Code sollte keinen Catch enthalten, der jede Ausnahme verschluckt und sie ohne eine Erklärung ignoriert. In dem seltenen Fall, dass Sie eine Ausnahme abfangen und ignorieren müssen, sollten Sie versuchen, sie auf einen bestimmten Ausnahmetyp zu beschränken, und Sie sollten immer einen Kommentar in den Code einfügen, der erklärt, warum die Ausnahme ignoriert wird.

Das dritte Beispiel funktioniert gut. Ich nehme an, dass Sie innerhalb des Blocks try eine weitere Ausnahmebehandlung haben, die die von Ihnen erwarteten spezifischen Ausnahmetypen abfängt und den Benutzer bei Bedarf über das Problem informiert.

1

Eine gängige Praxis ist zu versuchen, die Verwendung/finally (oder der Verwendung von Statements) im Business/Service Die Ebene, um sicherzustellen, dass Ressourcen ordnungsgemäß bereinigt werden.

Bei einer physischen Ebene Grenzen Sie lange Ausnahmen wollen könnten, so dass Sie so etwas wie die folgenden haben könnten:

try 
{ 
} 
catch(Exception ex) 
{ 
    ... log exception 
    throw; 
} 

Und vielleicht einen Top-Level-Exception-Handler (try/catch) im UI-Ebene.

Verwandte Themen