Insgesamt ist die Verwendung von try / catch so viel veraltet, weil catch-Block vom Standpunkt der Ressourcen so teuer ist. Die Verwendung von Try / Catch erinnert mich an das Risikomanagement . Risikomanagement hat zwei Dimensionen:
- Die Wahrscheinlichkeit des Eintretens von Risiken
- Der Schaden, den es haben kann
Wenn Sie jetzt das Haus verlassen, ist es so unwahrscheinlich, dass Ihnen ein Klavier auf den Kopf fällt (vielleicht 0,001%), dass Sie jedoch getötet werden können.
Die Ausnahmebehandlung ist so. Try Block ist nicht teuer. Aber catch-Block ist sehr teuer, da eine Tabelle mit Stack-Trace erstellt und andere Aufgaben ausgeführt werden müssen. Daher sollten Sie bei der Entscheidung über try / catch-Blöcke berücksichtigen, wie oft Sie wahrscheinlich catch block treffen. Wenn Sie unter 10.000 Verwendungen nur 1 Mal getroffen haben, verwenden Sie diese. Wenn es sich jedoch um ein Formular handelt und der Benutzer es wahrscheinlich nicht zu 50% korrekt ausfüllt, sollten Sie es vermeiden, dort einen Try / Catch-Block in Aktion zu setzen.
An Orten, an denen die Wahrscheinlichkeit des Auftretens von Ausnahmen hoch ist, wird empfohlen, if {} else {}
Blöcke zu verwenden, um das Auftreten von Ausnahmen zu vermeiden. Zum Beispiel, wenn Sie zwei Zahlen teilen möchten, anstatt zu schreiben:
try
{
int result = a/b;
}
catch (DivisionByZeroException ex)
{
// Showing a message here, and logging of course.
}
du solltest schreiben:
if (b == 0)
{
int result = a/b;
}
else
{
// Showing a message to user to change the value of b, etc.
}