<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.unkompliziert.eu/index.php?action=history&amp;feed=atom&amp;title=Fehlerarten_und_-behandlung</id>
	<title>Fehlerarten und -behandlung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.unkompliziert.eu/index.php?action=history&amp;feed=atom&amp;title=Fehlerarten_und_-behandlung"/>
	<link rel="alternate" type="text/html" href="https://wiki.unkompliziert.eu/index.php?title=Fehlerarten_und_-behandlung&amp;action=history"/>
	<updated>2026-05-01T00:02:15Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in unkompliziert.eu</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.unkompliziert.eu/index.php?title=Fehlerarten_und_-behandlung&amp;diff=81&amp;oldid=prev</id>
		<title>Felix: Die Seite wurde neu angelegt: „'''Fehlerarten'''  {| class=&quot;wikitable&quot; |- ! 1) IO-Error (während Eingabe) !! Runtime-Error !! System-Error |- | falscher Datentyp || falscher Datentyp || Zu…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.unkompliziert.eu/index.php?title=Fehlerarten_und_-behandlung&amp;diff=81&amp;oldid=prev"/>
		<updated>2020-04-11T08:11:20Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Fehlerarten&amp;#039;&amp;#039;&amp;#039;  {| class=&amp;quot;wikitable&amp;quot; |- ! 1) IO-Error (während Eingabe) !! Runtime-Error !! System-Error |- | falscher Datentyp || falscher Datentyp || Zu…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Fehlerarten'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 1) IO-Error (während Eingabe) !! Runtime-Error !! System-Error&lt;br /&gt;
|-&lt;br /&gt;
| falscher Datentyp || falscher Datentyp || Zu wenig Speicher&lt;br /&gt;
|-&lt;br /&gt;
| public/private, … falsch definiert || Zu wenig Speicher || Feuer&lt;br /&gt;
|-&lt;br /&gt;
| Außerhalb Klasse/namespace programmieren || Division durch 0 || HDD-Crash&lt;br /&gt;
|-&lt;br /&gt;
| SQL-Injection || Logische Fehler (z.B. = anstelle ==) || .......&lt;br /&gt;
|-&lt;br /&gt;
| Designfehler: Falsche Vererbung ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Syntaxfehler ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Programmierer ist für den Fehler verantwortlich. D.h. das Programm muss in geeigneter Weise auf den Fehler reagieren. || Programmierer ist für den Fehler verantwortlich. D.h. das Programm muss in geeigneter Weise auf den Fehler reagieren. || als Programmierer keine Möglichkeit auf diese Fehler zu reagieren&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Es gibt drei Möglichkeiten auf einen Runtime-Fehler zu reagieren:'''&lt;br /&gt;
&lt;br /&gt;
- '''Fehlermeldung'''&lt;br /&gt;
&lt;br /&gt;
Die Fehlermeldung beschreibt den erkannten Fehler.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* Popup-Fenster, Message-Box&lt;br /&gt;
* Töne: Beep-Code, z.B. POST Power On Self Test&lt;br /&gt;
* LED, Lampen, ...&lt;br /&gt;
* E-Mail&lt;br /&gt;
* LOG-Dateien, z.B. Ereignisprotokoll unter Windows&lt;br /&gt;
&lt;br /&gt;
- '''Fehlercode'''&lt;br /&gt;
&lt;br /&gt;
Eine Funktion liefert im Fehlerfall einen vorher fest definierten Code bzw. Wert zurück.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
* 0 = Alles ok&lt;br /&gt;
* -1 = Division durch 0&lt;br /&gt;
* -2 = Speicher voll&lt;br /&gt;
* -3 = ...&lt;br /&gt;
&lt;br /&gt;
Die Auswertung des Codes ist einfach aber umständlich.&lt;br /&gt;
&lt;br /&gt;
- '''Exception-Handling'''&lt;br /&gt;
&lt;br /&gt;
Grundidee:&lt;br /&gt;
Wenn eine Funktion programmiert wird, die einen Fehler erkennen, aber nicht beheben kann, dann löst sie einen neuen Fehler aus. (Sie erzeugt ein Fehlerobjekt)&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
if (Fehler erkannt)&lt;br /&gt;
    {&lt;br /&gt;
    throw new Exception(&amp;quot;Fehlerbeschreibung&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Das throw bewirkt, dass die normale Programmausführung abgebrochen wird. Wenn niemand sich um diesen Fehler &amp;quot;kümmert&amp;quot;, stürzt das Programm ab. (&amp;quot;gezielter Programmabbruch&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Ein mit throw ausgelöster Fehler muss gefangen werden &amp;quot;catch&amp;quot;. Innerhalb des catch-Befehls erfolgt anschließend die Fehlerbehandlung.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
    catch (Exception oExc)&lt;br /&gt;
    {&lt;br /&gt;
          hier steht die Fehlerbehandlung.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Vor dem Catch muss ein try-Befehl stehen. Die Funktion, die den Fehler auslösen kann, muss innerhalb des Try-Blocks stehen. &lt;br /&gt;
&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
        Befehle, in denen ein throw existiert&lt;br /&gt;
    }&lt;br /&gt;
    catch(Exception oExc)&lt;br /&gt;
    {&lt;br /&gt;
        Fehler behandeln, wenn eine Exception ausgelöst wurde.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Innerhalb des catch-Befehls erfolgt die Fehlerbehandlung.&lt;br /&gt;
Aufbau:&lt;br /&gt;
&lt;br /&gt;
catch (Datentyp des Fehlers Fehlerobjekt)&lt;br /&gt;
&lt;br /&gt;
Vor dem catch muss ein try-Befehl stehen. Die Funktion, die den Fehler auslösen kann muss innerhalb des try-Blocks stehen&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
    void speichern(...)&lt;br /&gt;
    {&lt;br /&gt;
        if(Disk full)&lt;br /&gt;
            throw new Fehler(&amp;quot;Disk voll&amp;quot;);&lt;br /&gt;
        fopen, fwrite, ... &amp;lt;= Fehler-Objekt&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Irgendwo im Programm bei der Verwendung der Funktion:&lt;br /&gt;
&lt;br /&gt;
    try&lt;br /&gt;
    { ...&lt;br /&gt;
        speichere (.....);&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
    catch (Fehler *pZeiger)&lt;br /&gt;
&lt;br /&gt;
Zu beachten:&lt;br /&gt;
Nach dem Auslösen einer Exception (throw) bricht das Programm den normalen Ablauf ab und arbeitet an dem zugehörigen catch-Block weiter. Dazwischen liegende Befehle werden übersprungen.&lt;br /&gt;
&lt;br /&gt;
'''Tipps zur Fehlerbehandlung'''&lt;br /&gt;
* nicht hinter jeder Programmzeile einen catch-Block setzen&lt;br /&gt;
* niemals eine Exception unterdrücken&lt;br /&gt;
* weiterleiten von Fehlern ist keine Schande&lt;/div&gt;</summary>
		<author><name>Felix</name></author>
		
	</entry>
</feed>