Gibt es eine Möglichkeit des Auftretens einer Ausnahme im Catch-Block? Wenn ja, wie kann ich damit umgehen?Ist es möglich, dass es in einem Catch-Block eine Ausnahme gibt?
Antwort
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.
- 1. Gibt es eine Möglichkeit, dass es jemals PHP.NET gibt?
- 2. "Wurf" in einem catchblock Mit
- 3. Ist es möglich, dass ein ListView eine untergeordnete Ansicht hat?
- 4. Ist es möglich, dass eine Website Referer-Header
- 5. Ist es möglich, eine Form
- 6. Ist es möglich, dass UIActivityViewController AAC anbringt?
- 7. Ist es möglich, dass eine Grails-Domain keine ID hat?
- 8. Ist es möglich, eine Umgebungsvariable in einem Makefile "zu deaktivieren"?
- 9. Ist es möglich, eine ISO in einem Andockbehälter zu montieren?
- 10. Ist es möglich, dass eine SQL-Tabelle null Spalten hat?
- 11. Ist es möglich, dass mysql eine verteilte Datenbank erstellt?
- 12. Es ist möglich, dass eine Datenbank beschädigt wird?
- 13. gibt es den spliterator aus einem sortierten Strom eine Ausnahme
- 14. eine Ausnahme werfen, wenn Transaktion gibt es
- 15. ist es möglich, eine Gerätefunktion in einem Thrust-Funktor aufzurufen?
- 16. ist es möglich, in scala
- 17. Ist es möglich, eine statische IP in einem Netboot.iso
- 18. Ist es möglich, in einem Container eine Mitgliederüberlastung zu speichern?
- 19. Ist es möglich, eine Konstruktorfunktion in einem Merkmal zu haben?
- 20. Ist es möglich, eine Transaktion ignorieren
- 21. Ist es möglich, eine Goroutine zu verschieben?
- 22. Ist es möglich, dass ToDo-Einträge außerhalb des Codes liegen?
- 23. Ist es möglich, einen globalen Ausnahme-Hook zu haben?
- 24. Ist es möglich, dass Datenbanktransaktionen mehrere Anfragen in Rails umfassen?
- 25. Ist es möglich, dass Speicherverlust bei Stack in .NET auftritt?
- 26. Ist es möglich, dass in VSCode intellisense den Rückgabetyp anzeigt?
- 27. Ist es möglich, eine Nachricht in einem leeren Datagrid anzuzeigen
- 28. ist es möglich, eine lokale Variable in einem Funktionskörper einzufügen?
- 29. Gibt es eine Methodenreferenz, um eine Ausnahme auszulösen?
- 30. Gibt es eine Möglichkeit, Runnable Run() eine Ausnahme auszulösen?
Ja. Sie können versuchen/fangen in einem catch-Block, wenn Sie müssen, aber das sollte selten sein, wenn überhaupt. – Crowcoder