#ErrorStdOut  ; 感觉上没什么用,主要还是用OnError()

OnError("LogError")  ; 注册函数,隐藏报错提示并把报错信息保存至桌面文本

; Try只是单行或局部的写法
Try Gui, Add, Text, gGoogle,search Google
  Catch Error
    MsgBox, % "报错行数:" Error.Line

Try Run, %A_ScriptDir%/exemplodearquivoinexistente.exe
Catch Error
  MsgBox % "执行运行命令时出错。具体来说:" Error.message     ; 如果上面的 Run 遇到错误,这个 msgbox 就会运行(因为文件 exampledefilenonexistent.exe 不存在)。

; 调用不存在的函数时() ; 存在#ErrorStdOut时,不会报错提示。也无法运行脚本

%cause% := error    ; 变量名不存在,调用错误【即使存在#ErrorStdOut也会报错,除非注册OnError()】
Return

; 报错时,把报错信息保存至桌面文本并退出脚本自身
LogError(exception) {
    FileAppend % "----- " A_YYYY "." A_MM "." A_DD " - " A_Hour ":" A_Min ":" A_Sec " -----`n发生错误的语句行号:" exception.Line "`n错误消息 ErrorLevel 值:" exception.Message "`n错误发生时正在执行的命令或函数名称:" exception.What "`n错误的额外信息:" exception.Extra "`n包含发生错误的语句和文件完整路径:" exception.File "`n`n"
        , %A_WorkingDir%\ErrorLog.txt
    MsgBox 0x40010, 程序运行时出错, % "发生错误的语句行号:" exception.Line "`n错误消息 ErrorLevel 值:" exception.Message "`n错误发生时正在执行的函数名称:" exception.What "`n错误的额外信息:" exception.Extra "`n包含发生错误的语句和文件完整路径:" exception.File "`n`n请与作者联系并检查修复。"
    ExitApp
}

新进程报错提示(exception) {
  SplitPath, % exception.File, 文件名
  MsgBox 0x40010, 你的"%文件名%"脚本语法写错了,请检查并修正!, % "发生错误的语句在第 " exception.Line-18 " 行`n`n报错消息:" exception.Message "`n`n报错命令或函数的名称:" exception.What "`n`n报错额外信息:" exception.Extra
  ExitApp
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。