« Back

Exception Handling

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Exception Handling
Answer
2/6/18 10:43 AM
Sehr geehrter Herr Utz,
Ich habe in meiner Arbeit mehrere Ado-Scripten die unterschiedliche Teile eines Projektes selbstständig abarbeiten und die auch einzelnen durch Buttons im ADOxx Modelling Toolkit aufgerufen werden können.

Dabei habe ich einige Arrays in den Scripten die abhängig von anderen Scripten sind, sodass alles in einer gewissen Reihenfolge aufgemacht werden soll, damit es keine Fehler auftreten. 
Wenn ich nun einen Button in der falschen Reihenfolge betätige würde ich gerne statt dem standard Errorbox von ADOxx den Fehler abfangen und meinen Text zb. " Die Capabilites sind noch nicht definiert, bitte vorher definieren"  als INFOBOX ausgeben, ohne jegliche andere Fehlermeldungen zu erhalten.

Ist sowas möglich? Wenn ja, wie würde das bei einem Array aussehen das noch "undefined" ist, da es erst in einem anderen Script initialisert wird.

Wie kann ich abfragen ob ein Array "undefined" ist und wenn das so sein, dann sollte meine INFOBOX erscheinen und das Programm abbrechen.

Im Anhang habe ich den typischen Fehler als Bild und das dazugehörige Script. 

RE: Exception Handling
Answer
2/6/18 10:56 AM as a reply to Mirza Talic.
Die Überprüfung ob eine Variable "undefined" ist kann über die "type()" Expression durchgeführt werden. Weitere Details dazu finden Sie hier: https://www.adoxx.org/live/expressions unter "Type-Checking"

 
Als Beispiel in Bezug auf Ihre AdoScript:
 1# vom Ergebnis Array auf lokales Array initialiseren
 2# show type in Window, only to showcase
 3CC "AdoScript" INFOBOX (type(nCps1))
 4
 5# check for type and perform required validation
 6IF (type(nCps1) = "undefined") {
 7CC "AdoScript" ERRORBOX "Variable nCps1 is undefined"
 8}
 9# in case defined, perform action
10ELSE {
11FOR i from:0 to :LEN(nCps1)-1) {
12 SET aPend: (aappend(nCpsArray, nCps1[i]))
13}

Eine weitere Möglichkeit des Errorhandling bei AdoScript Commands kann durch die Verwendung des ecode erreicht werden. Dies bezieht sich auf die Commands (nicht auf die Variablen) und erlaubt es die erfolgreiche Durchführung zu überprüfen und entsprechendes Handling zu implementieren.