找回密码
 加入
搜索
查看: 1904|回复: 7

[AU3基础] 【已解决】关于if @error的请教

[复制链接]
发表于 2021-3-13 15:03:29 | 显示全部楼层 |阅读模式
本帖最后由 anythinging 于 2021-3-13 20:10 编辑

在学习各位前辈的代码时,在函数运行后,经常看到用If @error Then 来确认函数是否运行正常。

一般情况下au3中的函数运行存在错误时,会将@error值设为非0。
请教是否可以理解为:
If @error Then  等同于 If @error <> 0 or @error <> '' Then,即函数运行出现错误时

请问这样理解对吗?



发表于 2021-3-15 12:45:51 | 显示全部楼层
因为@error的值不一定只有一个,看SetError设置的@error值有多少了,如果@error的值有很多,那么用if @error then的话就会简单很多了。我是这么理解的

点评

感谢解答!  发表于 2021-3-15 20:29
发表于 2021-3-13 16:38:40 | 显示全部楼层
没错,可以这样理解。
If <表达式> Then 就是表达式为真则符合,这里的表达式就是 @Error,如果 @Error <> 0 或 @Error <> ''  那肯定为真
@Error 的值取决于上次 SetError 的设置,通常紧随调用函数后取值,如果函数有定义 SetError 的话。

点评

感谢版主指点!  发表于 2021-3-13 20:10

评分

参与人数 1金钱 +40 收起 理由
anythinging + 40 很给力!

查看全部评分

发表于 2021-3-16 08:31:34 | 显示全部楼层
本帖最后由 ttmv2019sx 于 2021-3-16 08:36 编辑
afan 发表于 2021-3-13 16:38
没错,可以这样理解。
If  Then 就是表达式为真则符合,这里的表达式就是 @Error,如果 @Error  0 或 @Err ...

A版,是否有这种方式与方法,比如说,一个写好的代码中,只要中间的任何的环节碰到了错误,都指向统一的ERROR,而不需要每一个阶段会有可能出错的地方都来一个判断呢?也就是说,程序运行中,只要出错了不管是哪一种错误,都跳出对话窗     ‘你好,程序出错’   然后结束,这样可以实现的吗?

就好比,全局的热键定义一样,,一个死循环中,只有安了ESC键才可以退出,不知道上述的问题可以这样达到效果的吗。
发表于 2021-3-16 09:00:42 | 显示全部楼层
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
发表于 2021-3-16 13:57:46 | 显示全部楼层
afan 发表于 2021-3-16 09:00
只有针对 COM 的出错处理才行,刚好也符合你所关注的 IE 类操作。
比如帮助中的例子

好的,谢谢A版了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 14:35 , Processed in 0.078558 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表