Hallo liebe Leute,
ich verwende derzeit AutoIt 3.3.16.1 mit SciTE4AutoIt 4.4.6 (32 Bit) auf Windows 7 Pro SP1 (64 Bit).
Warum "verschluckt" hier Funktion _Eins() den FehlerCode aus Funktion _Drei() im Gegensatz zur Funktion _Zwei(), die ihn erneut setzt?
AutoIt: FehlerRückgabeTest
#NoTrayIcon
Opt('MustDeclareVars', 1)
ConsoleWrite(@CRLF & ' Zurück Fehler')
ConsoleWrite(@CRLF & '_Eins: ' & _Eins() & ' ' & @Error)
ConsoleWrite(@CRLF & '_Zwei: ' & _Zwei() & ' ' & @Error)
ConsoleWrite(@CRLF & @CRLF)
Exit
Func _Eins()
Return _Drei()
EndFunc
Func _Zwei()
Local $Return = _Drei()
If @Error Then SetError(@Error)
Return $Return
EndFunc
Func _Drei()
Return SetError(1, 0, -1)
EndFunc
Alles anzeigen
Soll das so sein, ist das ein Fehler oder mache ich etwas falsch?
Übrigens, wenn ich statt obigem ConsoleWrite()-Block
AutoIt: Alternativer ConsoleWrite-Block
ConsoleWrite(@CRLF & '_Eins:')
ConsoleWrite(@CRLF & 'Zurück: ' & _Eins())
ConsoleWrite(@CRLF & 'Fehler: ' & @Error)
ConsoleWrite(@CRLF & '_Zwei:')
ConsoleWrite(@CRLF & 'Zurück: ' & _Zwei())
ConsoleWrite(@CRLF & 'Fehler: ' & @Error)
ConsoleWrite(@CRLF & 'Ende' & @CRLF)
schreibe, dann wird der FehlerCode auch aus Funktion _Zwei() "verschluckt":
obwohl in der Hilfe steht:
@error und @extended werden beim Return nicht gesetzt und bleiben so, wie sie vor dem Aufruf waren.
Gruß, fee