-
  • EUKLID-Design
  • EUKLID-Design Classic
  • Dokumentation
  • Download
  • +49-991-2806945-0
  • info@eucad-software.de
AQL Einführung Programmiersprache
Ausgabeformatierung Symbole Ausdrücke Kontrollanweisungen Funktionen Dateibearbeitung Fehler
Fehlerbehandlung Fehlermeldungen
unterdrücken
Fehlermeldungen
zulassen
Fehlerausgabe Fehlersuche
Kommandosprache Vordefinierte
Funktionen
Datenstruktur Beispielprogramme Syntaxdiagramme

Fehler

Folgende Themen werden behandelt:

  • Fehlerbehandlung
  • Fehlersuche

Fehlerbehandlung

Während einer AQL-Sitzung können verschiedene Fehler auftreten:

Syntaxfehler Syntaxfehler werden während der Vorübersetzungsphase von der AQL-Syntaxanalyse erkannt.
AQL-Ausführungsfehler Diese Fehler werden während der Ausführungsphase des Programms erkannt. Typische Beispiele sind:
Attributabfrage eines undefinierten Symbols
Verwendung nicht initialisierter Variablen
Ausdrücke mit inkompatiblen Operanden (z.B. Vergleich von real und string)

Im interaktiven Betrieb erscheinen Fehlermeldungen in einem Popup-Fenster auf dem Bildschirm.

Mit der Funktion error_response ist das Verhalten einer AQL-Prozedur nach dem Auftreten von Laufzeitfehlern zu steuern:

error_response ("stop") // AQL wird abgebrochen
error_response ("continue") // AQL läuft weiter

Im Batch-Modus schreibt der AQL-Interpreter alle Fehlermeldungen in die gerade aktive Meldungsausgabedatei. Standardmäßig ist dies der Bildschirm. Mit der Anweisung error_file kann die Ausgabe auf eine andere Datei umgelenkt werden.

Während der Übersetzungsphase ist die Ausgabeumlenkung nicht aktiv. Syntaxfehler werden also immer auf die Standardausgabe geschrieben.

Während der Ausführungsphase wird ein bestimmter Fehler nur einmal gemeldet, selbst wenn der Fehler innerhalb einer Schleife auftritt.

Syntax- und Ausführungsfehler werden in Englisch ausgegeben, Aktionsfehler in der für ObjectD eingestellten Sprache.

In einigen Fällen kann der AQL-Programmierer das Auftreten von Fehlern vorhersehen, und so programmieren, daß im Fehlerfall entsprechende Maßnahmen ergriffen werden (siehe Rückgabewerte der AQL-Funktionen und Kapitel "Meldung in eigenem Fenster ausgeben – display_error" auf Seite 5-14).

Mit dem globalen AQL-Symbol errmes ist es möglich, den Text der Fehlermeldung auszuwerten. Folgende Attribute von errmes sind definiert:

.text Text der Fehlermeldung
.line Zeilennummer des Fehlerauftretens
.file Dateiname der AQL-Prozedur, die den Fehler enthält

errmes wird vor jedem Aufruf von modellbezogenen Funktionen auf "invalid" gesetzt. Das Text-Attribut enthält im Fehlerfall den Text der Fehlermeldung. Die Identifizierung eines Fehlers anhand seiner Textmeldung ist jedoch sprach- und eventuell versionsabhängig.

Bei Aktionen kann auch das Attribut valid des erzeugten Aktionszeigers getestet werden. Es wird empfohlen diesen Test vor dem Zugriff auf errmes zu machen. Der Test des valid-Attributs führt nämlich zuerst zu einem Versuch, das Objekt neu auszuwerten.

Wenn das System sich nicht im Update-Modus befindet, werden erzeugte Objekte nicht sofort ausgewertet. Das errmes-Symbol wird dann erst durch den valid-Test gesetzt.

Beispiel

p = point_intersection(, 11, 12, 0)
if not valid(p) then [errmes.Text] end

Ausgabe von Fehlermeldungen unterdrücken – disable_messages

Die Funktion disable_messages unterdrückt die Ausgabe von Fehlermeldungen in AQL.

disable_messages ( )

Ausgabe von Fehlermeldungen zulassen – enable_messages

Die Funktion enable_messages läßt die Ausgabe von Fehlermeldungen in AQL zu.

enable_messages ( )

Dialog-Fehlerausgabe – short_messages

Die Funktion schaltet die Dialog-Fehlerausgabe für Laufzeitfehler ein oder aus.

short_messages (<boolean>)

Fehlersuche

Um Fehler in AQL-Programmen aufzudecken, kann der Programmierer an beliebiger Stelle innerhalb des AQL-Programms die Anweisung break einfügen.

break(<prompt_string>)

Diese Anweisung ist als AQL-Funktion break implementiert. Ihr einziges Argument ist ein String, der beim Erreichen dieser Funktion als Eingabeaufforderung durch den Interpreter ausgegeben wird und zwar nach der Anweisung, in das diese Funktion integriert ist. Die ausgegebene Anweisung ist zu diesem Zeitpunkt noch nicht ausgeführt. Der Anwender hat nun drei Möglichkeiten, die Verarbeitung fortzusetzen:

  • Ausgabe von Variableninhalten mit dem Anweisung [...]
  • schrittweise Ausführung dieses und der folgenden Anweisungen durch Drücken von <RETURN>
  • Fortsetzung des AQL-Programms durch Eingabe des Buchstabens g

In diesem Zustand ist auch die Ein- und Ausgabe unterbrochen. Die genaue Stelle dafür kann wegen der Benutzerunterbrechung nicht definiert werden und ist auch von der Betriebsart (Dialog, Batch) des Systems abhängig.

Besondere Möglichkeiten für die Ausgabesteuerung in prompt_string sind:

Beispiel

1. break ("%f line %n : %l --- break> ");
2. break ("%l>);

Die Funktion kann auch ohne Argumente aufgerufen werden:

break()

Dieser Aufruf entspricht dem oben angeführten 1. Beispiel.

Das Öffnen von Dateien kann mit der AQL-Funktion verbose verfolgt werden. Sie erhält einen Parameter, der diesen Modus ein- oder ausschaltet.

verbose (logical_expression)

◀ Dateibearbeitung Kommandosprache ▶


Kontakt Impressum Datenschutz