namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:ausnahmen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:ausnahmen [2019-01-13 14:18] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Ausnahmebehandlung ======
 +> If anything can go wrong, it will.
 +>> ---  Murphy's Law
 +
 +===== Ausnahmen =====
 +Eine Ausnahme (engl. exception) ist eine Situation,
 +in der das Programm nicht wie erwartet fortgesetzt werden kann.
 +Gleichzeitig besteht kaum eine Chance,
 +geeigneter auf diese Situation zu reagieren
 +als eine [[#Ausnahmen werfen|Ausnahme zu werfen]],
 +mit der der normale Programmlauf unterbrochen wird.
 +Die geworfene Ausnahme ist ein Objekt beliebigen [[.:typen|Typs]],
 +das Informationen über die Art der Ausnahmesituation enthalten kann.
 +Das Programm kann an anderer Stelle die [[#Ausnahmen fangen]]
 +und durch geeignete Anweisungen die Situation zu retten suchen.
 +Wird eine geworfene Ausnahme nicht gefangen, 
 +führt sie zum (abnormalen) Programmende.
 +
 +Siehe auch:
 +Schlüsselwörter [[.:keywords#try]], [[.:keywords#throw]], [[.:keywords#catch]],
 +[[.:include:exception]], [[.:include:stdexcept]], [[.:include:cassert]],
 +[[.:beispiel:except]]. 
 +
 +==== Ausnahmen werfen ====
 +Syntax:
 +
 +>  ''throw'' Objekt '';''
 +
 +==== Ausnahmen fangen ====
 +Syntax:
 +
 +>  ''try''
 +>  ''{''
 +>  %%//%% unsicherer Code, der Ausnahme werfen kann
 +>  ''}''
 +>  ''catch('' Typ name '')''
 +>  ''{''
 +>  %%//%% Ausnahmebehandlung
 +>  ''}''
 +>  %%//%% weitere catch-Blöcke
 +
 +Wenn im ''try''-Block eine Ausnahme geworfen wird,
 +werden alle im Block definierten Variablen abgebaut (stack unwinding).
 +Stimmt der Typ der geworfenen Ausnahme mit dem Typ einer ''catch''-Bedingung überein,
 +wird dieser ''catch''-Block abgearbeitet, der Ausnahmezustand gilt als beseitigt
 +und das Programm wird nach dem letzten ''catch''-Block fortgesetzt.
 +
 +Der Block ''catch(...){'' ... ''}'' fängt jeden Ausnahmetyp.
 +Im ''catch''-Block kann die gefangene Ausnahme mit der Anweisung ''throw;'' weitergeworfen werden.
 +
 +==== Ausnahmen anmelden ====
 +Funktionen können sich im Funktionskopf verpflichten, keine Ausnahmen zu werfen.
 +
 +Syntax:
 +
 +>  Typ Funktionsname''('' Parameterliste '') noexcept;''
 +
 +Versucht eine undisziplinierte Funktion dennoch Ausnahmen zu werfen, 
 +wird das Programm über die Funktion ''std::unexpected()'' beendet.
 +
 +Die in C++98 erlaubten throw-Deklarationen haben sich nicht bewährt und sind in C++17 nicht mehr erlaubt.
  
kennen/ausnahmen.txt · Zuletzt geändert: 2019-01-13 14:18 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki