Hey Leute,
ich habe mich gefragt, ob man OnAutoItExitRegister() nutzen kann, um flexibel Fehler "abzufangen"?
Ich stelle mir vor, dass man damit einfach sein Skript noch mal starten kann, wenn es z.B. ein Array-Fehler gab. Wenn man also ein Array erstellt, es nutzt/nutzen will, es aber durch irgendeine Begebenheit nicht erstellt wurde.
Klar kann man das mit "If IsArray()" abfangen, allerdings ist das viel Code und nicht immer will man nur die eine Funktion dann "auslassen", weil der nachfolgende Rest, der vllt. in ganz anderen Funktionen sind, auch davon abhängt. (Das kann ja so verschachtelt sein, dass es schwer ist, das alles dann zu verbinden.)
Ich habe mal getestet, wie die Funktion auf falsche Arrays reagiert... Es führt die Funktion aus und beendet dann durch den Fehler.
Frage: So stapeln sich durch die Rekursion die Fehler-Abbrüche, wenn das öfter vor kommt. Ist das ein starkes Problem oder nur, wenn das wirklich VIEL vor kommt?
Hier mein Test:
Spoiler anzeigen
OnAutoItExitRegister("MyTestFunc")
[/autoit] [autoit][/autoit] [autoit]Dim $a[3]
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(2000)
MsgBox(4096, "", $a[4])
WEnd
Func MyTestFunc()
MsgBox(4096, "", @exitCode)
EndFunc ;==>MyTestFunc
Damit das keine "Endlosschleife" wird, die auch der User nicht beenden kann, kann man ja die GUI mit einer eigenen Exit-Funktion verbinden und OnAutoItExitUnRegister() nutzen, bevor man beendet.
Ist das logisch? Übersehe ich etwas? Gibt es bessere Lösungen?
LG
Aca