was bedeutet diese Erklärung? Ausnahme () throw ()

8

std :: exception class ist wie folgt definiert

%Vor%

Was bedeutet die throw () Syntax in einer Deklaration? Kann throw () Parameter nehmen? Was bedeuten keine Parameter?

    
Murali 13.01.2010, 17:52
quelle

5 Antworten

12

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.

    
Leandro T. C. Melo 13.01.2010, 17:53
quelle
18

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 .

    
anon 13.01.2010 17:54
quelle
1

Es handelt sich um eine Ausnahmespezifikation . Keine Argumente bedeutet, dass die Funktion keine Ausnahmen auslösen kann.

    
James 13.01.2010 17:54
quelle
1

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 .

    
RC. 13.01.2010 17:56
quelle
0
  

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.

    
martsbradley 13.01.2010 17:56
quelle

Tags und Links