Namensräume
Varianten
Aktionen

throw expression

Aus cppreference.com
< cpp‎ | language

 
 
Sprache C + +
Allgemeine Themen
Original:
General topics
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Flusskontrolle
Original:
Flow control
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Bedingte Ausführung Aussagen
Original:
Conditional execution statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Iterationsanweisungen
Original:
Iteration statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Gehe Aussagen
Original:
Jump statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Funktionen
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Funktion Erklärung
Lambda-Funktion Erklärung
Funktions-Template
inline-Spezifizierer
Exception-Spezifikationen (veraltet)
noexcept Spezifizierer (C++11)
Ausnahmen
Original:
Exceptions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Werfen Ausdruck
Namespaces
Original:
Namespaces
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Types
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
decltype specifier (C++11)
Specifiers
Original:
Specifiers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
cv Planer
Lagerdauer Planer
constexpr Spezifizierer (C++11)
auto Spezifizierer (C++11)
alignas Spezifizierer (C++11)
Initialisierung
Original:
Initialization
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Literale
Original:
Literals
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Expressions
Original:
Expressions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
alternative Darstellungen
Utilities
Original:
Utilities
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Types
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
typedef declaration
Typ Aliasdeklaration (C++11)
Attribute (C++11)
Wirft
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
impliziten Konvertierungen
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
C-Stil und funktionale Besetzung
Speicherzuweisung
Original:
Memory allocation
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Classes
Original:
Classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Class-spezifische Funktion Eigenschaften
Original:
Class-specific function properties
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
explizit (C++11)
statisch
Besondere Member-Funktionen
Original:
Special member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Templates
Original:
Templates
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Klassen-Template
Funktions-Template
Template-Spezialisierung
Parameter Packs (C++11)
Verschiedenes
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Inline Montage
 
Signalisiert eine fehlerhafte Bedingung und führt einen Error-Handler .
Original:
Signals an erroneous condition and executes an error handler.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Inhaltsverzeichnis

[Bearbeiten] Syntax

throw expression (1)
throw (2)

[Bearbeiten] Erklärung

für weitere Informationen über versuchen und Fang (Exception Handler) Blöcke
1)
Die Wurfweite Expressionskonstrukte ein temporäres Objekt in unspezifizierter Lagerung, mit der gleichen Art wie expression (mit cv-Qualifizierer entfernt und der Typ konvertiert vom Array von T bis Zeiger auf T und aus der Funktion zurückkehrt T bis Zeiger auf Funktion zurückkehrt T, wie erforderlich) und initialisiert sie aus expression in der gleichen Weise ein Funktionsargumente oder Rückgabewerte der Funktion Parameter oder Argument einer return Ausdruck (dh Kopie elision und bewegen Bau stattfinden, wenn möglich) initialisiert werden. Das Exception-Objekt bleibt bestehen, bis der letzte catch-Klausel abgeschlossen ist oder bis zum letzten std::exception_ptr, die auf diese Objekt zerstört wird .
Original:
The throw expression constructs a temporary object in unspecified storage, with the same type as expression (with cv-qualifiers removed and the type converted from array of T to pointer to T and from function returning T to pointer to function returning T, as necessary), and initializes it from expression in the same manner a function arguments or return values are initialized from the function parameters or the argument of a return expression (i.e. copy elision and move construction take place if possible). The exception object persists until the last catch clause completes or until the last std::exception_ptr that references this object is destroyed.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Sobald das Exception-Objekt aufgebaut ist, funktioniert der Ablauf nach hinten (bis der Aufrufliste), bis sie den Beginn einer try Block, an welcher Stelle die Parameter der zugehörigen catch Blöcke mit dem geschleudert expression eine Übereinstimmung zu finden verglichen werden erreicht. Wenn keine Übereinstimmung gefunden wird, fährt der Steuerablauf zu den Stapel bis zum nächsten Block try entspannen, und so weiter. Wenn eine Übereinstimmung gefunden wird, springt der Steuerfluss zu dem übereinstimmenden catch Block (die Ausnahmesteuerungsprogramm), die normalerweise ausgeführt wird .
Original:
Once the exception object is constructed, the control flow works backwards (up the call stack) until it reaches the start of a try block, at which point the parameters of the associated catch blocks are compared with the thrown expression to find a match. If no match is found, the control flow continues to unwind the stack until the next try block, and so on. If a match is found, the control flow jumps to the matching catch block (the exception handler), which executes normally.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
gebaut, da die entsprechenden try-Block eingegeben wurde, in umgekehrter Reihenfolge des Aufbaus. Wenn eine Ausnahme von einem Konstruktor geworfen wird, werden Destruktoren für alle voll ausgebaute nicht-statische Nicht-Varianten Mitglieder und Basisklassen aufgerufen. Dieser Vorgang wird als Stack Unwinding .
Original:
As the control flow moves up the call stack, destructors are invoked for all objects with '
automatische Speicherung Dauer
Original:
automatic storage duration
The text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.
</div>
constructed since the corresponding try-block was entered, in reverse order of construction. If an exception is thrown from a constructor, destructors are called for all fully-constructed non-static non-variant members and base classes. This process is called stack unwinding.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
2)
Der Einwurf Ausdruck ohne Operand darf nur innerhalb einer catch-Block verwendet werden (es nennt std::terminate wenn anderweitig verwendet werden). Es bricht die Ausführung des catch-Block und übergibt die Kontrolle an die nächste passende catch-Klausel bis der Aufrufliste (aber nicht zu einer anderen catch-Klausel nach dem gleichen try-Block), die Wiederverwendung der bestehenden Ausnahme-Objekt: keine neuen Objekte werden .
Original:
The throw-expression without an operand may only be used inside a catch block (it calls std::terminate if used otherwise). It abandons the execution of the catch block and passes control to the next matching catch clause up the call stack (but not to another catch clause after the same try block), reusing the existing exception object: no new objects are made.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Siehe std::terminate und std::unexpected zur Handhabung von Fehlern, die während der Ausnahmebehandlung ergeben .
Original:
See std::terminate and std::unexpected for the handling of errors that arise during exception handling.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Usage

Während Einwurf Ausdruck kann verwendet werden, um die Steuerung an einen beliebigen Code-Block zu übertragen bis der Ausführungs-Stack für beliebige Gründen (ähnlich std::longjmp), ist seine bestimmungsgemäße Verwendung Fehlerbehandlung .
Original:
While throw-expression can be used to transfer control to an arbitrary block of code up the execution stack, for arbitrary reasons (similar to std::longjmp), its intended usage is error handling.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Fehlerbehandlung

Auslösen einer Ausnahme wird verwendet, um Fehler von Funktionen, bei denen "Fehler" in der Regel nur auf den folgenden Referenzfehler: Für ein <ref>-Tag fehlt ein schließendes </ref>-Tag.[1]:
Original:
{{{2}}}
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Failures zu etablieren Invarianten
Original:
# Failures to establish invariants
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Failures die Nachbedingungen erfüllen
Original:
# Failures to meet the postconditions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Failures die Voraussetzungen des Anrufers entsprechen
Original:
# Failures to meet the preconditions of the caller
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Insbesondere bedeutet dies, dass die Ausfälle von Konstruktoren und die meisten Betreiber von Auslösen von Ausnahmen sollten gemeldet werden .
Original:
In particular, this implies that the failures of constructors and most operators should be reported by throwing exceptions.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Exception Sicherheit

Nachdem der Fehler durch eine Funktion gemeldet wird, kann zusätzliche Garantien Bezug auf den Zustand des Programms bereitgestellt werden. Die folgenden vier Ebenen der Ausnahme Garantie sind in der Regel Referenzfehler: Für ein <ref>-Tag fehlt ein schließendes </ref>-Tag.[2][3], which are strict supersets of each other:
Original:
{{{2}}}
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Nothrow (oder nofail) Ausnahme Garantie - die Funktion nicht löst Ausnahmen .
Original:
# Nothrow (or nofail) exception guarantee -- the function never throws exceptions.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Strong Ausnahme Garantie - Wenn die Funktion eine Ausnahme auslöst, der Zustand des Programms wird wieder in den Zustand unmittelbar vor dem Aufruf der Funktion rollte .
Original:
# Strong exception guarantee -- If the function throws an exception, the state of the program is rolled back to the state just before the function call.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Basic-Ausnahme Garantie - Wenn die Funktion eine Ausnahme auslöst, ist das Programm in einem gültigen Zustand. Es kann verlangen Bereinigung, aber alle Invarianten sind intakt .
Original:
# Basic exception guarantee -- If the function throws an exception, the program is in a valid state. It may require cleanup, but all invariants are intact.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
# Keine Ausnahme Garantie - Wenn die Funktion eine Ausnahme auslöst, kann das Programm nicht in einem gültigen Zustand sein: Ressourcen-Lecks, Speicherfehler oder andere invariante zerstörenden Fehler aufgetreten sein könnte .
Original:
# No exception guarantee -- If the function throws an exception, the program may not be in a valid state: resource leaks, memory corruption, or other invariant-destroying errors may have occurred.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Exception-Objekte

Während Gegenstände jeglicher komplette Art und cv Zeiger auf void als Ausnahme Objekte geworfen werden, werfen alle Standard-Library-Funktionen anonyme temporäre Objekte nach Wert, und die Arten von diesen Objekten abgeleitet werden (direkt oder indirekt) von std::exception. Benutzerdefinierte Ausnahmen der Regel folgen diesem Muster. Referenzfehler: Für ein <ref>-Tag fehlt ein schließendes </ref>-Tag.[4]
Original:
{{{2}}}
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Um unnötige Kopieren des Exception-Objekt und Objekt Schneiden zu vermeiden, ist die beste Praxis für catch-Klauseln durch Bezugnahme fangen. Referenzfehler: Für ein <ref>-Tag fehlt ein schließendes </ref>-Tag.[5][6]
Original:
{{{2}}}
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Keywords

throw

[Bearbeiten] Beispiel

[Bearbeiten] Referenzen

  1. H.Sutter, A. Alexandrescu (2004), "C++ Coding Standards", Item 70
  2. H. Sutter (2000) "Exceptional C++"
  3. D. Abrahams (2001) "Exception Safety in Generic Components"
  4. M. Cline, C++FAQ Lite 17.11
  5. M. Cline, C++FAQ Lite 17.12
  6. H.Sutter, A. Alexandrescu (2004) "C++ Coding Standards" Item 73
Original:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Siehe auch