例如:程序中需要读取某ini文件,但最初并没有容错处理。当打包为exe文件后拷贝至另一机器运行,显示“错误号53,ini文件未找到”,程序被终止。
那这个错误号53我可以事先在代码中进行捕捉吗?是用on error goto 语句吗?错误号如何捕捉到变量?

解决方案 »

  1.   

    Sub Main()
    On Error GoTo ERRMainmain processExit Sub
    ERRMain:
        Unload frmSplash
        Call Err_Action("ModMain", Err.Number, Err.Description)
        Select Case Err.Number
            Case -2147467259
                MsgBox "在默认路径找不到" & IDatapath & "或" & IWDpath & "数据库.或格式不正确."
                End
            Case Else
                MsgBox "系统捕获未预期错误,请与系统管理员联系。", vbCritical, "未知错误"
                Resume
                End
        End Select
    End SubErr.Number就是错误号。
      

  2.   

    可以事先捕获。楼上的正解Sub Main()
    '出现错误时转到ERRMain处
    On Error GoTo ERRMain'''''用户程序'''''Exit Sub' 出现错误时进入这里
    ERRMain:
        Unload frmSplash
        Call Err_Action("ModMain", Err.Number, Err.Description)
        Select Case Err.Number
            Case -2147467259
                MsgBox "在默认路径找不到" & IDatapath & "或" & IWDpath & "数据库.或格式不正确."
                End
            Case Else
                MsgBox "系统捕获未预期错误,请与系统管理员联系。", vbCritical, "未知错误"
                Resume
                End
        End Select
    End Sub
      

  3.   

    呵呵,楼上的忘了加签名。补上--------------------------------------------------------
    进销存源码500元出售 http://www.skycn.com/soft/32388.html  
    --------------------------------------------------------
      

  4.   

    Unload frmSplashCall Err_Action("ModMain", Err.Number, Err.Description)
    --------------------------------
    请解释一下上面2句的含义,谢谢!
      

  5.   

    Unload frmSplashCall Err_Action("ModMain", Err.Number, Err.Description)
    ------------------------------------------------------------
    上一句UNLOAD 是我自己程序的启动窗口,你可以忽略.
    Err_Action也是我自己的错误记录子程序,向错误记录文件中写入发生错误的模块,错误号和错误描述.以供远程分析.你也可以不用.
    主要是复制时忘了删除.