Ohne irgendeinen Parameter bedeutet dies, dass die erwähnten Funktionen nicht Ausnahmen auslösen.
Wenn Sie irgendetwas als Parameter angeben, sagen Sie, dass die Funktion nur Ausnahmen dieses Typs auslöst. Beachten Sie jedoch, dass dies eine nicht -Ersetzung für den Compiler ist. Wenn eine Ausnahme eines anderen Typs ausgelöst wird, ruft das Programm std :: terminate () auf.
Es ist eine "Ausnahme-Spezifikation". throw () bedeutet "diese Funktion wird keine Ausnahmen auslösen". Sie können auch Ausnahmen angeben, also würde throw (foo) sagen, dass diese Funktion Ausnahmen vom Typ foo auslösen könnte.
Die Nützlichkeit dieser Funktion wurde in der C ++ - Community schon oft diskutiert - die allgemeine Bewertung scheint zu sein, dass sie nicht besonders nützlich ist. Weitere Details finden Sie im Herb Sutter Artikel .
Es handelt sich um eine Ausnahmespezifikation . Keine Argumente bedeutet, dass die Funktion keine Ausnahmen auslösen kann.
Dies wird als Wurfspezifikation bezeichnet. Es definiert, welche Ausnahmen (falls vorhanden) von der Funktion ausgelöst werden können.
Diese klingen in der Theorie großartig, aber es gibt Probleme mit ihrer Verwendung.
Eine gute Diskussion hierzu finden Sie in dieser SO-Frage .
Kann throw () Parameter übernehmen?
Ja, es kann verwendet werden, um zu deklarieren, welche Parameter die Methode auslösen darf.
Auch der Destruktor ist als throw () markiert, Destruktoren sollten niemals Ausnahmen auslösen, da sie möglicherweise bereits im Kontext einer ausgelösten Ausnahme ausgeführt werden.