2017-12-18 5 views

Antwort

1

Eine Ausnahme kann in einem catch Block geworfen werden, aber es ist selten, oder zumindest sollte es sein. Offensichtlich hängt es davon ab, was Sie in den catch Block stecken.

Ihr bester Schutz ist es, umfangreiche Code innerhalb einer catch Anweisung zu vermeiden, und nur "sicheren" Code, der nicht vernünftigerweise ist wahrscheinlich eine weitere Ausnahme zu werfen.

Denken Sie daran, nichts im "normalen" Fluss Ihres Codes sollte wegen einer Ausnahme passieren, so dass Sie in den meisten Fällen nichts in Ihrer catch außer außer Protokollierung oder etwas anderes weniger haben. Wenn Sie in Ihrem catch ein ganzes Stück Anwendungscode haben, sollte es wahrscheinlich nicht da sein.

Wenn Sie etwas in Ihrem catch zu tun haben, die einen fathomable, bekannt Grund hat, warum es eine weitere Ausnahme auslösen könnten, könnten Sie eine andere try/catch in Ihrem catch setzen. Es passiert - es ist nicht unbekannt - aber es ist ungewöhnlich.

Wenn Sie eine andere Methode in Ihrem catch aufrufen müssen, ist es gut zu wissen, ob es wahrscheinlich eine Ausnahme auslösen wird. Es tut nicht weh, mit deinem Logging vertraut zu sein und sicherzustellen, dass es keine weitere Ausnahme auslöst. Wenn es sich um eine .NET Framework-Methode handelt, wird in der Dokumentation normalerweise angegeben, welche Ausnahmen ausgelöst werden und warum.

So wie ein willkürliches Beispiel, Blick auf die Dokumentation für die Remove Methode von Dictionary<TKey, TValue>:

Ausnahmen

Exception    Condition 

ArgumentNullException key is null 

es Sie dann erzählt, falls Sie sich fragen, was passiert, wenn Sie Versuchen Sie, einen Schlüssel zu entfernen, der nicht existiert.

Wenn das Dictionary kein Element mit dem angegebenen Schlüssel enthält, bleibt das Dictionary unverändert. Es wird keine Ausnahme ausgelöst.

Es kann sehr hilfreich sein, sich mit den Informationen in der Online-Dokumentation vertraut zu machen, einschließlich Details zu den Ausnahmen, die eine Methode auslöst.

Verwandte Themen