【已解决】关于if @error的请教
本帖最后由 anythinging 于 2021-3-13 20:10 编辑在学习各位前辈的代码时,在函数运行后,经常看到用If @error Then 来确认函数是否运行正常。
一般情况下au3中的函数运行存在错误时,会将@error值设为非0。
请教是否可以理解为:
If @error Then等同于 If @error <> 0 or @error <> '' Then,即函数运行出现错误时
请问这样理解对吗?
因为@error的值不一定只有一个,看SetError设置的@error值有多少了,如果@error的值有很多,那么用if @error then的话就会简单很多了。我是这么理解的 没错,可以这样理解。
If <表达式> Then 就是表达式为真则符合,这里的表达式就是 @Error,如果 @Error <> 0 或 @Error <> ''那肯定为真
@Error 的值取决于上次 SetError 的设置,通常紧随调用函数后取值,如果函数有定义 SetError 的话。 本帖最后由 ttmv2019sx 于 2021-3-16 08:36 编辑
afan 发表于 2021-3-13 16:38
没错,可以这样理解。
IfThen 就是表达式为真则符合,这里的表达式就是 @Error,如果 @Error0 或 @Err ...
A版,是否有这种方式与方法,比如说,一个写好的代码中,只要中间的任何的环节碰到了错误,都指向统一的ERROR,而不需要每一个阶段会有可能出错的地方都来一个判断呢?也就是说,程序运行中,只要出错了不管是哪一种错误,都跳出对话窗 ‘你好,程序出错’ 然后结束,这样可以实现的吗?
就好比,全局的热键定义一样,,一个死循环中,只有安了ESC键才可以退出,不知道上述的问题可以这样达到效果的吗。
ttmv2019sx 发表于 2021-3-16 08:31
A版,是否有这种方式与方法,比如说,一个写好的代码中,只要中间的任何的环节碰到了错误,都指向统一的E ...
只有针对 COM 的出错处理才行,刚好也符合你所关注的 IE 类操作。
比如帮助中的例子
; 安装自定义错误处理程序
; 如果在函数中使用,处理程序在返回时自动禁用。
; 如果未安装,脚本将在错误时终止
Local $oMyError = ObjEvent('AutoIt.Error', 'ErrFunc')
; 这里执行一个预设故障(对象不存在)
Local $oIE = ObjCreate('InternetExplorer.Application')
$oIE.visible = 1
$oIE.bogus
If @error Then
; 检查 @error 需要一个自定义错误处理程序
MsgBox(48, '错误', '上一行中有一个错误.')
EndIf
MsgBox(48, '', '脚本退出') ; 如果没有安装处理程序,这行不会被执行
Exit
; 这是一个自定义错误处理程序
Func ErrFunc($oError)
MsgBox(48, '截获一个 COM 错误 !', _
'错误代码: 0x' & Hex($oError.number, 8) & @CRLF & _
'错误描述: ' & $oError.windescription & _
'发生在行: ' & $oError.scriptline)
Exit
EndFunc ;==>ErrFunc afan 发表于 2021-3-16 09:00
只有针对 COM 的出错处理才行,刚好也符合你所关注的 IE 类操作。
比如帮助中的例子
好的,谢谢A版了
页:
[1]