Heim >Backend-Entwicklung >C++ >Wie kann ich mehrere Ausnahmen in einem einzigen Codeblock effizient abfangen?
Mehrere Ausnahmen in einem einzigen Codeblock abfangen
In Programmiersprachen ist das Abfangen von Ausnahmen ein wichtiger Teil der Fehlerbehandlung. Wenn jedoch mehrere spezifische Ausnahmen abgefangen werden müssen, insbesondere wenn mehrere Vorgänge an einem Objekt ausgeführt werden, kann es zu ausführlichen und sich wiederholenden Ausnahmen kommen.
Frage:
Betrachten Sie den folgenden Code, in dem Sie versuchen, eine GUID aus einer Abfragezeichenfolge zu analysieren und sie auf ein Feld festzulegen:
<code>try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; }</code>
Wenn in diesem Beispiel während der GUID-Analyse eine FormatException oder OverflowException auftritt, wird die WebId auf Guid.Empty gesetzt. Wenn jedoch eine andere unerwartete Ausnahme auftritt, wird sie weitergegeben, ohne dass sie behandelt wird. Um Boilerplate-Code zu vermeiden und mehrere Ausnahmen effizient zu behandeln, ist eine bessere Lösung erforderlich.
Lösung: System.Exception abfangen und je nach Typ wechseln
Um mehrere Ausnahmen in einem einzigen Codeblock abzufangen, können Sie die Catch-Syntax (Exception ex) verwenden. Dadurch werden alle von der Basisklasse Exception geerbten Ausnahmen abgefangen, einschließlich spezifischer Ausnahmen wie FormatException und OverflowException.
Nachdem Sie eine Ausnahme abgefangen haben, können Sie eine Switch-Anweisung basierend auf dem Typ der Ausnahme verwenden, um zu bestimmen, wie mit ihr umgegangen werden soll. Wenn es sich bei der Ausnahme um eine bekannte Ausnahme handelt (z. B. FormatException oder OverflowException), können Sie bestimmte Aktionen ausführen (z. B. WebId auf Guid.Empty festlegen). Andernfalls können Sie die Ausnahme erneut auslösen, damit Code auf höherer Ebene sie verarbeiten kann.
<code>catch (Exception ex) { if (ex is FormatException || ex is OverflowException) { WebId = Guid.Empty; } else throw; }</code>
Dieser Ansatz ermöglicht es Ihnen, mehrere spezifische Ausnahmen in einem Codeblock abzufangen und sie nach Bedarf zu behandeln, während Sie gleichzeitig die Ausbreitung unerwarteter Ausnahmen zulassen.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Ausnahmen in einem einzigen Codeblock effizient abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!