Try-Catch-Anweisung (Versuch)

Previous  Next

 

 

 

23.02.2010

Try-Catch-Anweisung (Versuchte Ausführung)

 

Die hmtoggle_plus1 try-catch XDEV NLS: Versuche - Bei Fehler Anweisung ermöglicht Ihnen interne Programmfehler sowie nicht beeinflussbare Fehlern abzufangen und entsprechend darauf zu reagieren. Damit können Sie beispielsweise eine für den Anwender nachvollziehbare Fehlermeldung ausgeben, wenn ein Datenbank-Zugriff oder das Lesen einer Datei nicht wie geplant funktioniert. Darüber hinaus können Sie mit einer hmtoggle_plus1 try-catch XDEV NLS: Versuche - Bei Fehler Anweisung verhindern, dass bei einem Fehler gleich die komplette Funktion abgebrochen wird. Deshalb sollten Sie zumindest kritische Aktionen, bei denen man mit einem Fehlschlagen rechnen kann, möglichst mit Hilfe einer hmtoggle_plus1 try-catch XDEV NLS: Versuche - Bei Fehler Anweisung ausführen. Ihr Programm wird dadurch deutlich robuster und anwenderfreundlicher.

 

Der hmtoggle_plus1 try XDEV NLS: Versuche Block wird mit dem Schlüsselwort hmtoggle_plus1 try XDEV NLS: Versuche eingeleitet. Im hmtoggle_plus1 try XDEV NLS: Versuche Block befinden sich die Anweisungen, die ausgeführt werden sollen. Der hmtoggle_plus1 catch XDEV NLS: Bei Fehler Block wird mit dem Schlüsselwort hmtoggle_plus1 catch XDEV NLS: Bei Fehler eingeleitet. Die Anweisungen im hmtoggle_plus1 catch XDEV NLS: Bei Fehler Block werden jedoch nur dann ausgeführt, wenn bei der Ausführung einer Anweisung im hmtoggle_plus1 try XDEV NLS: Versuche Block ein Fehler auftritt. Ansonsten wird der hmtoggle_plus1 catch XDEV NLS: Bei Fehler Block übersprungen.

 

hmtoggle_plus1XDEV Object Language

1

 

2

 

3

 

4

 

try

{

     // Anweisungsblock 

}  

catch

{

     // Anweisungsblock 

}  

Sowohl der try als auch der catch Block werden mit Hilfe von Klammern eingegrenzt.

hmtoggle_plus1XDEV Basic

1

2

3

Try

    // Anweisungsblock 

Catch

       // Anweisungsblock 

End Try 

Die Try-Catch Anweisung wird mit dem Schlüsselwort End Try abgeschlossen, welches vom Code-Editor automatisch erzeugt wird.

hmtoggle_plus1XDEV NLS

1

2

3

4

Versuche

       // Anweisungsblock 

Bei Fehler

       // Anweisungsblock 

Sowohl der try als auch der catch Block werden durch Einrückung eingegrenzt, die vom Code-Editor automatisch durchgeführt wird.

 

 

hmtoggle_plus1 try-catch XDEV NLS: Versuche - Bei Fehler mit Fehler-Ausgabe:

 

hmtoggle_plus1XDEV Object Language

1

 

2

 

4

 

5

try

{

         // Anweisungsblock 

}  

catch

{

   showMessage("Meldung", "Es ist ein Fehler aufgetreten!");

}  

Die Funktion showMessage( ) finden Sie in der Funktionsbibliothek Dialoge.

hmtoggle_plus1XDEV Basic

1

2

3

4

5

Try

       // Anweisungsblock 

Catch

   showMessage("Meldung", "Es ist ein Fehler aufgetreten!")

End Try 

Die Funktion showMessage( ) finden Sie in der Funktionsbibliothek Dialoge.

hmtoggle_plus1XDEV NLS

1

2

3

4

Versuche

         // Anweisungsblock 

Bei Fehler

   zeigeNachricht("Meldung", "Es ist ein Fehler aufgetreten!")

Die Funktion zeigeNachricht( ) finden Sie in der Funktionsbibliothek Dialoge.

 

 

Aktionen, die Sie in einer hmtoggle_plus1 try-catch XDEV NLS: Versuche - Bei Fehler Anweisung ausführen sollten;

 

Aktionen

Code-Beispiel

Sämtliche Datenbank-Zugriffe

Vor allem bei Datenbank-Zugriffen kann es sehr leicht zu Fehlern kommen, u.a. wenn eine individuelle Filter-Bedingung oder ein individuelles SQL-Statement nicht korrekt zusammengesetzt wurde, wenn Feldnamen oder Relationen geändert wurden.

 

1

 

2

 

3

 

4

 

try

{

  XDEV Query #FAHRZEUGE << FAHRZEUGE;

}  

catch

{

  showMessage("Meldung", "Es ist ein Fehler aufgetreten!");

}  

Sowohl der try als auch der catch Block werden mit Hilfe von Klammern eingegrenzt.

1

2

3

4

 

Try

   XDEV Query #FAHRZEUGE << FAHRZEUGE

Catch

   showMessage("Meldung", "Es ist ein Fehler aufgetreten!")

End Try 

Die Try-Catch Anweisung wird mit dem Schlüsselwort End Try abgeschlossen, welches vom Code-Editor automatisch erzeugt wird.

1

2

3

4

Versuche

    XDEV Datenbankabfrage #FAHRZEUGE << FAHRZEUGE

Bei Fehler

   zeigeNachricht("Meldung", "Es ist ein Fehler aufgetreten!")

Sowohl der try als auch der catch Block werden durch Einrückung eingegrenzt, die vom Code-Editor automatisch durchgeführt wird.

 

Bestimmte Methoden-Aufrufe

Auch beim Aufruf von Methoden kann es zu Fehlern kommen, u.a. weil Parameter vom falschen Typ übergeben werden.

 

1

2

 

3

 

4

 

5

 

String datensatzID

try

{

  datensatzID = Formular.getTagData();

}  

catch

{

  showMessage("Meldung", "Es ist ein Fehler aufgetreten!");

}  

Liest von einem Formular die Zusatzdaten aus. Beim Füllen eines Formulars mit einem Datensatz wird automatisch die Datensatz-ID in den Zusatzdaten des Formulars gespeichert. Diese kann man entsprechend auslesen.

1

2

3

4

 

Try

   XDEV Query #FAHRZEUGE << FAHRZEUGE

Catch

   showMessage("Meldung", "Es ist ein Fehler aufgetreten!")

End Try 

Liest von einem Formular die Zusatzdaten aus. Beim Füllen eines Formulars mit einem Datensatz wird automatisch die Datensatz-ID in den Zusatzdaten des Formulars gespeichert. Diese kann man entsprechend auslesen.

1

2

3

4

Versuche

    XDEV Datenbankabfrage #FAHRZEUGE << FAHRZEUGE

Bei Fehler

   zeigeNachricht("Meldung", "Es ist ein Fehler aufgetreten!")

Liest von einem Formular die Zusatzdaten aus. Beim Füllen eines Formulars mit einem Datensatz wird automatisch die Datensatz-ID in den Zusatzdaten des Formulars gespeichert. Diese kann man entsprechend auslesen.

 

 

Input-Output Aktionen

Bei Input-Output Aktionen wie beim Zugriff auf Dateien kann es sehr häufig zu unerwarteten Fehlern kommen. U.a. können die Daten in einem unbekanntem Format vorliegen, nicht erlaubte Schlüsselwörter oder problematische Sonderzeichen enthalten die nicht ausreichend berücksichtigt wurden. Darüber hinaus kann es zu vielerlei nicht beeinflussbarer Fehler kommen, u.a. nicht vorhandene, umbenannte oder zerstörte Datei, fehlende Schreib-/Leserechte usw.

 

1

2

3

 

4

5

 

6

 

 

7

 

8

 

9

String zeile;

 

try

{

   Int datei = openLocalRead();

   while (zeile!=null)

   {

      zeile = datei.readLine(datei);

   }

}  

catch

{

   showMessage("Meldung", "Es ist ein Fehler aufgetreten!");

}  

close(datei);  

Int datei = openLocalRead();

Definiert eine Variable mit dem Namen datei vom Typ Gannzzahl und weist dieser eine Datei zu, die mit openLocalRead( ); vom Benutzer zugewiesen wird. Dabei wird ein Kanal zur Datei geöffnet.

 

String zeile;

Definiert eine Variable mit dem Namen Zeile vom Typ Zeichenkette. Darin werden dann die einzeln aus der Datei ausgelesenen Zeilen gespeichert.

 

while (zeile!=null)

Wiederholt den folgenden Anweisungsblock solange zeile != null, sprich nicht null ist. Wenn beim Auslesen der Datei das Datei-Ende erreicht wird, wird null zurückgegeben.

 

zeile = datei.readLine(datei);

Weist der Variable zeile den Rückgabewert der Methode datei.readLine(datei) zu. Die Methode liest aus der Datei die nächste Zeile aus und gibt diese zurück.

 

close(datei); 

Schließt den offenen Kanal zur Datei.

1

2

3

4

5

6

7

8

9

 

11

12

String zeile

 

Try

    Int datei = openLocalRead()

    While zeile!=null

        zeile = datei.readLine(datei)

    Wend

Catch

    showMessage("Meldung", "Es ist ein Fehler aufgetreten!")

End Try 

 

close(datei)

Int datei = openLocalRead()

Definiert eine Variable mit dem Namen datei vom Typ Gannzzahl und weist dieser eine Datei zu, die mit openLocalRead( ); vom Benutzer zugewiesen wird. Dabei wird ein Kanal zur Datei geöffnet.

 

String zeile

Definiert eine Variable mit dem Namen Zeile vom Typ Zeichenkette. Darin werden dann die einzeln aus der Datei ausgelesenen Zeilen gespeichert.

 

while (zeile!=null)

Wiederholt den folgenden Anweisungsblock solange zeile != null, sprich nicht null ist. Wenn beim Auslesen der Datei das Datei-Ende erreicht wird, wird null zurückgegeben.

 

zeile = datei.readLine(datei)

Weist der Variable zeile den Rückgabewert der Methode datei.readLine(datei) zu. Die Methode liest aus der Datei die nächste Zeile aus und gibt diese zurück.

 

Wend

Markiert das Ende des While-Blocks.

 

close(datei)

Schließt den offenen Kanal zur Datei.

1

2

3

4

5

6

7

8

9

10

Zeichenkette zeile

 

Versuche

     Ganzzahl datei = öffneLokalZumLesen ( )

     Solange (zeile != NULL_WERT)

         zeile = leseZeile ( datei )

Bei Fehler

     zeigeNachricht("Meldung", "Es ist ein Fehler aufgetreten!")

 

schließe ( datei )

Ganzzahl datei = öffneLokalZumLesen ( )

Definiert eine Variable mit dem Namen datei vom Typ Gannzzahl und weist dieser eine Datei zu, die mit öffneLokalZumLesen( ); vom Benutzer zugewiesen wird. Dabei wird ein Kanal zur Datei geöffnet.

 

Zeichenkette zeile

Definiert eine Variable mit dem Namen Zeile vom Typ Zeichenkette. Darin werden dann die einzeln aus der Datei ausgelesenen Zeilen gespeichert.

 

Solange (zeile != NULL_WERT)

Wiederholt den folgenden Anweisungsblock solange zeile != NULL_WERT, sprich nicht null ist. Wenn beim Auslesen der Datei das Datei-Ende erreicht wird, wird die Konstante NULL_WERT zurückgegeben.

 

zeile = leseZeile ( datei )

Weist der Variable zeile den Rückgabewert der Methode datei.leseZeile( datei ) zu. Die Methode liest aus der Datei die nächste Zeile aus und gibt diese zurück.

 

schließe ( datei )

Schließt den offenen Kanal zur Datei.

 

 

Hinweis: In manchen Fällen ist davon abzuraten, ein Programm trotz abgefangenem Fehler fortzusetzen, u.a. bei der Verarbeitung von Daten die anschließend in die Datenbank gespeichert werden sollen, da dies die Konsistenz der Daten schwer schädigen kann.

 

 

Basiswissen: Variablen, programmieren mit XDEV 2.