Selbst die sorgfältigste Programmierung und eine umfangreiche Qualitätssicherung können spätere Laufzeitfehler nicht zu 100% ausschließen. Aktuell kann beim Auftreten eines solchen Fehlers eine eigene Routine per ErrCall() aufgerufen werden, innerhalb des Standard- oder Advanced-Clients folgt anschließend jedoch immer eine Meldungsbox. Für den Endanwender ist dies nicht so sinnvoll, eine applikationsspezifische Meldung ist da oft besser geeignet.
Bisher gab es jedoch keine Möglichkeit, die CONZEPT 16-eigene Meldung zu unterdrücken. Ab der kommenden Version 5.6.07 kann die per ErrCall() gesetzte Funktion deshalb mit einem Rückgabewert versehen werden, der die Weiterverarbeitung des Laufzeitfehlers verhindern kann:
sub ErrHandler : logic;
{
WinDialogBox(0,'CONZEPT 16','Es gab einen Laufzeitfehler!',0,0,0);
return(false);
}
Bei einem Resultat von false erscheint die Meldungsbox dann nicht mehr. Bei Rückgabe von true oder falls die Funktion keinen Rückgabewert liefert, wird der Fehler wie bisher angezeigt. Falls im SOA-Service die Funktion ein false zurückliefert, wird der Laufzeitfehler nicht protokolliert. Bei aktiver Debuggerverbindung erfolgt jedoch immer ein Anzeige des Fehlers im Debugger, unabhängig vom Rückgabewert.
3 Antworten
Vielen Dank für die schnelle Umsetzung! Finde die Lösung sehr gut!
Das kann schon jetzt geändert werden, der Rückgabewert wird natürlich in Versionen vor der 5.6.07 ignoriert.
Kann die ErrHandler-Routine jetzt schon ensprechend deklariert werden, oder muß damit gewartet werden, bis die Anwender mindestens Version 5.6.07 haben ?