Ich schließe eine Header-Datei von Drittanbietern ein. Es hat Funktionen, die Ausnahmen auslösen können. Wie ermittle ich in meinem Quellcode, welche Ausnahmen möglicherweise aus dieser Datei ausgelöst werden können? Es war eine Interviewfrage. Meine Antwort bestand darin, die Funktionsdeklarationen durchzugehen und nach der Ausnahmebeschreibung zu suchen. Das könnte uns einen Hinweis geben. Gibt es eine andere Möglichkeit, mit der wir Ausnahmen vorhersagen können, die ausgelöst werden könnten?Wie errate ich alle möglichen Ausnahmen, die in C++ geworfen werden könnten?
5
A
Antwort
3
Dies hat mehrere Aspekte:
- Wenn Ausnahmen für eine Funktion deklariert sind, werden nur diejenigen (und Klassen abgeleitet, natürlich) kann möglicherweise geworfen werden, alle anderen Programmabbruch führen.
- Auch wenn Ausnahmen für eine Funktion deklariert sind, erzwingt nicht jeder Compiler diese Regel.
- Wenn keine Ausnahmen (nicht eine leere Reihe von Ausnahmen!) Für eine Funktion deklariert sind, kann alles geworfen werden.
- Vernünftiger Code wird niemals etwas werfen, das nicht von
std::exception
abgeleitet ist, also anzunehmen, dass ein abgeleiteter Typ geworfen wird, ist ein guter Ansatz. - Guter Code dokumentiert die Fehlerbehandlung, obwohl Sie implizit
std::bad_alloc
von jeder Funktion erwarten sollten, die Speicher zuweist.
+0
Leider gibt es dort viel nicht-vernünftigen Code. Daher kann Catch-All nützlich sein, auch wenn es normalerweise auch ein Zeichen für Facepalm ist. –
Verwandte Themen
- 1. Listet alle Ausnahmen auf, die durch eine Methode ausgelöst werden könnten
- 2. Informationen darüber, wo C++ - Ausnahmen in catch-Block geworfen werden?
- 3. Benutzerdefinierte Service-Ausnahmen werden als AxisFault geworfen
- 4. CocosDenshion - Ich sehe immer Ausnahmen geworfen
- 5. Wie bekomme ich alle möglichen Kombinationen von Vektor C++
- 6. Handelt es sich um alle möglichen (nicht aktivierten) Ausnahmen?
- 7. Wie erhalte ich 'global' Ausnahmen, die in Objektinstanzen ausgelöst werden
- 8. Generieren Sie alle möglichen Permutationen in C
- 9. Warnung vor möglichen ausgelösten Ausnahmen in Scala
- 10. Wie bekomme ich eine Liste aller möglichen Ausnahmen der Funktion
- 11. Werden Fehler, die in UncaughtExceptionHandler geworfen werden, verschluckt?
- 12. Alle möglichen Wertekombinationen erhalten
- 13. Shiro: Handhabung geworfen Ausnahmen von Anmerkungen
- 14. Wie alle Java-Ausnahmen auf dem Terminal gedruckt werden?
- 15. Wie alle Ausnahmen in der Flasche abgefangen werden?
- 16. Wie kann ich alle Ausnahmen mailen?
- 17. alle möglichen Phasen Kombination
- 18. alle möglichen Kombinationen Get Zeile in Matrix
- 19. Exception geworfen Fehler in c
- 20. Sicherstellen, dass alle Ausnahmen berücksichtigt werden, wenn PHP verwendet wird
- 21. Können C++ Funktionen als Extern "C" geworfen werden?
- 22. Java - Ausnahme muss geworfen werden, aber wie?
- 23. Alle möglichen Permutationen aller möglichen Größen in Java
- 24. Welche möglichen Zeichen könnten als Ergebnis von PHPs uniqid() zurückgegeben werden?
- 25. Ruby c-Erweiterungen: Wie kann ich alle Ausnahmen abfangen, einschließlich Dinge, die nicht StandardErrors sind?
- 26. Regex, um alle möglichen Übereinstimmungen für ein Muster in C#
- 27. Können Objekte mit privaten Kopierkonstruktoren geworfen werden?
- 28. Wie könnten zwei Apps erstellt werden, die miteinander kommunizieren können?
- 29. Eigene Ausnahme in C++ kann nicht geworfen werden
- 30. Was kostet die Verwendung von Ausnahmen in Objective-C?
Es gibt keinen anderen Weg. Wenn Ihr Code Ausnahmen nicht passieren lassen soll (z. B. eine Modulgrenze), verwenden Sie eine Catch-All-Klausel. – StoryTeller
Gibt es ein Tool, das wir ausführen könnten, um das herauszufinden? –
Der einzige Weg, dies zu erkennen, ist der Quellcode der Bibliothek. – QuestionC