Rückkehr im Catch-Block?
Ist, ist falsch, um eine return-Anweisung im catch-block?
Was sind die alternativen?
ich.e:
public bool SomeFunction()
{
try
{
//somecode
return true;
}
catch(Exception ex)
{
MessageBox.Show(ex.message);
return false;
}
}
Kommentar zu dem Problem
es ist in Ordnung, warum nicht?
InformationsquelleAutor der Frage lowlyintern | 2010-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Rückgabe, die normalerweise von catch-block.
Es ist in der Regel gut funktionierenden Codes.
InformationsquelleAutor der Antwort Svisstack
Eine alternative wäre zum speichern der return-Wert in einer temporären variable:
Aber ich persönlich finde die Art und Weise, die Sie geschrieben haben (mit einer catch-all-catch-Anweisung) werden mehr lesbar. Auf der anderen Seite, wenn Sie erwarten, dass eine bestimmte Ausnahme, und Sie können über mehrere Pfade auf zurück Erfolg oder nicht...
Dann meiner Meinung nach bist du am besten aus, drücken Sie die return-Anweisungen so nahe am Ende wie möglich.
Als seitliche Anmerkung, abhängig von der Anwendung, prüfen, protokollieren der Ausnahmen, die Sie fangen, anstatt nur zeigt Sie dem Benutzer. Angemeldet Ausnahmen sind viel zuverlässiger als Benutzer erzählt, was passiert ist.
InformationsquelleAutor der Antwort Mark Rushakoff
Wenn im try-block gibt es bereits eine return-Anweisung, würde ich wahrscheinlich den anderen return am Ende der Funktion:
- Und dies, um zu vermeiden, mehrere zurück, wenn mehrere Ausnahmen behandelt werden müssen.
InformationsquelleAutor der Antwort Darin Dimitrov
Es ist ok, nur im Hinterkopf haben, dass einige code kann ausgeführt nach der return-Anweisung (return-Wert ll eingelöst werden).
InformationsquelleAutor der Antwort Andrew
Persönlich lege ich die return-Anweisung am Ende der Methode statt im catch-block. Aber beide sind in Ordnung. Es geht um Lesbarkeit (subjektiv) und Richtlinien in Ihrer Organisation.
InformationsquelleAutor der Antwort Bart
Es ist nicht falsch, aber wenn Sie eine Ressource, in der Regel finally-block wird verwendet, um es zu schließen, anstatt durch den Aufruf der close-Methode zweimal zu. In diesem Fall können Sie wählen, um die return-Anweisung, nachdem der finally-block.
InformationsquelleAutor der Antwort Feyyaz
Ja, es ist völlig normal.
Vergessen Sie nicht, dass Sie können auch verwenden, schließlich - block werden ausgeführt, nach der Rückkehr.
InformationsquelleAutor der Antwort Piotr Justyna
Macht perfekten Sinn für mich, für die eine Funktion gibt bei Erfolg true zurück und false bei einem Fehler. Ich hoffe, es ist nichts falsch mit ihm - ich Tue es die ganze Zeit 🙂
InformationsquelleAutor der Antwort Ray
Ist der primäre Zweck eines catch-Blocks ist es, einen Ort, wo man gehen eine außergewöhnliche situation eingetreten, die in einem try-block. So fingen Sie eine Ausnahme, ging es... und von einer Methode zurückgegebenen. Wenn der Aufrufer-Methode kümmert sich nicht um die Ausnahme, das ist absolut normal.
InformationsquelleAutor der Antwort n535
Können Sie ein
return
im catch-block. Sie explizit wissen, dass Ihr code return und Ausführung anstelle des Stopps an den catch-block.Anstatt, dass eine Menge von try-catch-Blöcke im code, das kann verwirrend und nur verursachen ein Durcheinander in deinem code, ist es immer besser in den Griff, alles in Ihrer noe versuchen Sie zu fangen und einfach prüfen was der Fehler zurückgegeben wurde.
Dies sind zwei Möglichkeiten, zu überprüfen, welche Art die Ausnahme war, so kann man die Anzeige eine entsprechende Meldung an. Sie können auch einfach fangen spezifische Ausnahmen, wenn Sie wollte, also statt
Exception as err
Sie tun könnencatch IOException, ...
InformationsquelleAutor der Antwort E. Oregel