Welche Ausnahmeklassen sind in der C++ - Standardbibliothek enthalten und wofür sollten sie verwendet werden? Ich weiß, dass es ein paar neue C++ 11 Ausnahmen gibt, aber ich bin mir nicht sicher, was sie sind oder wo sie sind.Welche Ausnahmeklassen befinden sich in der C++ - Standardbibliothek?
Antwort
std::exception <exception> interface (debatable if you should catch this)
std::bad_alloc <new> failure to allocate storage
std::bad_array_new_length <new> invalid array length
std::bad_cast <typeinfo> execution of an invalid dynamic-cast
std::bad_exception <exception> signifies an incorrect exception was thrown
std::bad_function_call <functional> thrown by "null" std::function
std::bad_typeid <typeinfo> using typeinfo on a null pointer
std::bad_weak_ptr <memory> constructing a shared_ptr from a bad weak_ptr
std::logic_error <stdexcept> errors detectable before the program executes
std::domain_error <stdexcept> parameter outside the valid range
std::future_error <future> violated a std::promise/std::future condition
std::invalid_argument <stdexcept> invalid argument
std::length_error <stdexcept> length exceeds its maximum allowable size
std::out_of_range <stdexcept> argument value not in its expected range
std::runtime_error <stdexcept> errors detectable when the program executes
std::overflow_error <stdexcept> arithmetic overflow error.
std::underflow_error <stdexcept> arithmetic underflow error.
std::range_error <stdexcept> range errors in internal computations
std::regex_error <regex> errors from the regular expression library.
std::system_error <system_error> from operating system or other C API
std::ios_base::failure <ios> Input or output error
Quelle: http://en.cppreference.com/w/cpp/error/exception
In der Praxis sind die meisten Ausnahmen sind benutzerdefinierte Ausnahmen abgeleitet von logic_error
und runtime_error
. Nicht dass diese vernachlässigt werden, sondern dass viele Ausnahmen domänenspezifisch sind.
Denken Sie daran, dass eine Ausnahme widerspiegeln sollte, was schiefgelaufen ist und nicht wer warf es. (Nein "MyProgramException" s)
Sehen Sie diese site
Exception Description
===================================
std::exception An exception and parent class of all the standard C++ exceptions.
std::bad_alloc This can be thrown by new.
std::bad_cast This can be thrown by dynamic_cast.
std::bad_exception This is useful device to handle unexpected exceptions in a C++ program
std::bad_typeid This can be thrown by typeid.
std::logic_error An exception that theoretically can be detected by reading the code.
std::domain_error This is an exception thrown when a mathematically invalid domain is used
std::invalid_argument This is thrown due to invalid arguments.
std::length_error This is thrown when a too big std::string is created
std::out_of_range This can be thrown by the at method from for example a std::vector and std::bitset<>::operator[]().
std::runtime_error An exception that theoretically can not be detected by reading the code.
std::overflow_error This is thrown if a mathematical overflow occurs.
std::range_error This is occured when you try to store a value which is out of range.
std::underflow_error This is thrown if a mathematical underflow occurs.
Das ist gut, aber es fehlen die Ausnahmen von C++ 11, und es wird nicht angezeigt, welche Ausnahmen sich in welchen Headern befinden. –
@MooingDuck Ihre Frage wurde mit 'C++', nicht mit 'C++ 11' getaggt, und alle befinden sich im gleichen'
[C++ bedeutet, was auch immer die neueste Version ist, während C++ 11 und C++ 03 sind Fragen zu diesen spezifischen Versionen] (http://meta.stackexchange.com/questions/112641/when-did-the-c-tag-start-to-imply-c11-by-default). Meine Frage bezieht sich nicht auf eine bestimmte Version, sondern nur auf die aktuellsten Informationen zu C++. Wie auch immer, ich werde die Frage bearbeiten, um C++ 11 zu erwähnen. Auch nicht alle diese Fehler sind in '
- 1. Versionen der C++ - Standardbibliothek
- 2. Inneres Arbeiten der C-Standardbibliothek
- 3. C++ Standardbibliothek Ausnahmeliste?
- 4. Wo befinden sich Holzstämme?
- 5. Welche Header in der C++ - Standardbibliothek enthalten garantiert einen weiteren Header?
- 6. Wie kann man wissen, welche Elemente sich in der aktuellen Mausposition befinden?
- 7. Was ist der schnellste Weg, um herauszufinden, welche Koordinaten sich in einem bestimmten Umkreis befinden?
- 8. Wo sollten sich Standortkonfigurationsdatenrepositorys befinden?
- 9. Muss sich die .res-Datei in der Quellcodeverwaltung befinden?
- 10. Wo befinden sich Minix-Verzeichniseinträge?
- 11. Wo befinden sich Jenkins Artefakte?
- 12. Wo sind die Header der C++ - Standardbibliothek
- 13. Verwendung von C-Strings in der C++ - Standardbibliothek
- 14. Gibt es in der C++ - Standardbibliothek eine reine virtuelle Funktion?
- 15. Wo befinden sich die Auslöser in MVC?
- 16. Wo befinden sich Baugruppen in .NET physisch?
- 17. Wo befinden sich OpenOffice.org-Vorlagen in Linux?
- 18. JavaFX Prüfe, ob sich mehrere Elemente in der Schwebe befinden
- 19. Visual Studio 2013 C++ Standardbibliothek
- 20. Hat Objective-C eine Standardbibliothek?
- 21. Dokumentation der SBCL-Standardbibliothek?
- 22. Stabilisierung der Standardbibliothek qsort?
- 23. Calltree für c + + Programm zur Standardbibliothek
- 24. Wo befinden sich solr.xml, solrconfig.xml und schema.xml?
- 25. Wie befinden sich Speicherreferenzen in einer Implementierung von beweglicher Speicherbereinigung?
- 26. Wo befinden sich die Java-Archivdateistruktur? Spezifikationen?
- 27. Wo befinden sich IntelliJ-Scratch-Dateien?
- 28. Wo befinden sich Informationen von dockerfile?
- 29. JavaScript-ähnliches Objekt in der Python-Standardbibliothek?
- 30. Matrix Standardbibliothek
'bad_function_call, domain_error und future_error' auf Msdn sie schlimmsten exampled sind und erklärt :( –
' bad_function_call' ausgelöst wird, wenn Sie haben ein default-konstruiertes std :: function-Objekt und versuchen, die umbrochene Funktion aufzurufen Da es keine umbrochene Funktion gibt, gibt es nichts zu rufen –
'bad_function_call' wird ausgelöst, wenn Sie versuchen,' std :: function aufzurufen 'das ist nicht bereit (aka, default const über nullptr gelöscht oder explizit gelöscht. 'future_error' wird verwendet, wenn Sie eine der vielen Voraussetzungen der Funktionen für' Versprechen' und 'Zukunft' verletzen. Und 'domain_error' ist (in der Theorie) für Fälle, in denen die Eingabe einer Funktion außerhalb des gültigen Bereichs für diese Funktion liegt (z. B. eine negative Zahl für' std :: sqrt'). –