Fehlerbehandlung

Top  Previous  Next

Skripte > Klassen-Elemente und C++-Befehle > Parserklasse-Methoden > Plugin-Methoden > Fehlerbehandlung

 

 

void UseExcept(bool xbUseExcept)

 

Mit dieser Anweisung kann bestimmt werden, ob das Parsen im Fehlerfall durch eine   Exception abgebrochen werden soll (xbUseExcept == true) oder, ob die Fehlermeldung in einem Container der Plugin-Klasse zwischengespeichert wird und der Abbruch innerhalb des regulären Codes dadurch erfolgt, dass für das nächste Token jeweils die Symbol-Nummer Null zurückgegeben wird.

 

 

bool GetUseExcept() const

 

gibt zurück, ob das Parsen im Fehlerfall durch eine Exception unmittelbar abgebrochen werden soll, oder ob der Abbruch über die Rückgabe der Symbol-Nummer Null für das jeweils nächste Token erfolgt.

 

 

bool HasError() const

 

HasError gibt true zurück, wenn ein Parse-Fehler aufgetreten ist, der keine Exception ausgelöst hat, weil UseExcept abgeschaltet wurde. Wenn HasError true zurückgibt besteht noch die Möglichkeit unmittelbar eine Aktion auszuführen, bevor das Parsen beendet wird.

Nach der Ausführung einer Produktion, die direkt vom semantischen Code aus aufgerufen wurde, kann mit dem Hauptparser fortgesetzt werden, wenn UseExcept abgeschaltet wurde. HasError gibt dann wieder false zurück, bis eventuell ein Fehler im Hauptparser auftritt.

 

 

void GenError(const str& xs)

 

Durch den Aufruf von GenError wird ein Fehler erzeugt, der das Parsen zum Abbruch bringt. Der Funktion wird ein String übergeben, der eine Fehlemeldung enthält. Diese Meldung wird nach dem Abbruch des Parsens in der Log-Fenster angezeigt.

Je nachdem, ob UseExcept ein- oder ausgeschaltet ist erfolgt der Abbruch regulär oder durch eine Exception ähnlich wie durch die throw Anweisung. Die durch GenError erzeugte Ausnahmeklasse enthält jedoch zusätzliche Informationen über den Ort, an dem der Fehler auftrat.

 

 

void AddMessage(const str& xs)

void AddWarning(const str& xs)

void AddError(const str& xs)

 

Die Plugin-Klasse enthält nun standardmäßig einen Container (vector) in dem mehrere Meldungen, Warnungen und Fehler gesammelt werden können, um sie erst nach Beendigung des Parsens auszugeben. Hierfür gibt es die drei Methoden AddMessage, AddWarning und AddError, denen jeweils ein Textstring übergeben wird. Diese Strings werden nach Beendigung des Parsens in der Log-Fenster angezeigt oder sie erscheinen im Resultat-Fenster des Transformations-Mangers, wenn das Projekt von dort ausgeführt wurde.

 

Im exportierten C++-Code erhält man mit den Methoden MsgBegin und

MsgEnd zwei Iteratoren, über die die verschiedenen CTT_Message-Typen ausgelesen werden können. Mit HasMsg kann zuvor geprüft werden, ob der Container nicht leer ist und mit der Methode GetMsgType von CTT_Message erhält man einen der enumerierten Typen: eMessage, eExit, eWarning, eError, eParseError oder eSemError.



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English