如何使VB运行出现错误的时候留在窗口,而不是直接退出

来自外太空的你 2014-07-17 08:47:31
如何使VB运行出现错误的时候留在窗口,而不是直接退出
...全文
440 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsxzzcm1 2014-07-29
  • 打赏
  • 举报
回复
不生成文件没直接编译执行,遇到错误不就提示错误了嘛。。
taoguangye 2014-07-28
  • 打赏
  • 举报
回复
on error 只能捕捉到一般的VB内部错误,比如内存访问异常是捕捉不到的
youshuai168 2014-07-28
  • 打赏
  • 举报
回复
Public Sub mMakeErrorLog(ByVal pErrNum As Variant, ByVal pErrDesc As Variant, ByVal pSub As Variant, ByVal pLineNum As Variant) Dim strDateTime As String Dim strDir As String Dim strPathFile As String Dim intFileNum As Integer Dim strErrMsg As String Dim strMsg As String 'Check Dir \ErrorLog exist or not? 10 strDir = App.Path & "\ErrorLog" 20 If Dir(strDir, vbDirectory) = "" Then 30 MkDir strDir 40 End If 'Set Error message 50 strDateTime = Format(Date, "yyyy/mm/dd") & " " & Format(Time(), "hh:mm:ss") 60 strErrMsg = strDateTime & " --> Error: " & pErrNum & " , " & pErrDesc _ & "--> From: " & pSub & " , @Line: " & pLineNum 'Open file 70 intFileNum = FreeFile() 80 strPathFile = strDir & "\ErrorLog" & Trim(Format(Date, "yyyy")) _ & Trim(Format(Date, "mm")) & ".txt" 90 Open strPathFile For Append As #intFileNum 'Write Error message 100 Write #intFileNum, strErrMsg 'Close file 110 Close #intFileNum 'Display Error message 120 strMsg = "Error: " & pErrNum & " , " & pErrDesc _ & vbCrLf & "From: " & pSub & " , @Line: " & pLineNum 130 MsgBox strMsg, vbCritical End Sub 上面是错误处理函数 下面调用就可以了 Private Sub 函数名() On Error GoTo ErrorHandle 此处为你要写的代码 Exit Sub ErrorHandle: Call mMakeErrorLog(Err.Number, Err.Description, "函数名()", Erl) Err.Clear End Sub
Tiger_Zhao 2014-07-18
  • 打赏
  • 举报
回复
不处理错误的程序都是耍流氓。
Tiger_Zhao 2014-07-18
  • 打赏
  • 举报
回复
有几个原则

1)避免出错
比如出“除零错”,那么先检查一下除数就能避免。
比如读文件,先检查一下文件是否存在就能避免“文件不存在”的错误。

2)错误预期
————有可能出错的位置(通常是不受程序控制的外部资源)就要加错误处理
即使文件存在,如果给别的程序加了锁,也有可能在打开时发生错误,必须加错误处理。
操作数据库,可能会有网络故障、服务器故障,必须加错误处理。

3)就近捕获
通常文件读写、网络通讯、数据库操作之类的外部资源,配对的打开和关闭、启动和递交或回滚操着,通常在同一个调用层次中(同一个方法、同一个对象)。
如果不就近捕获任由错误向上抛,就会打断中间层次的正常流程,最容易导致各种开始执行正常后来就出问题的情况。

如果不遵循这些原则,那就不是真心做程序而是耍流氓了。
  • 打赏
  • 举报
回复
引用 4 楼 Tiger_Zhao 的回复:
不处理错误的程序都是耍流氓。
这怎么讲.?
clear_zero 2014-07-17
  • 打赏
  • 举报
回复
引用 2 楼 u010526292 的回复:
[quote=引用 1 楼 clear_zero 的回复:] 你要抓错误。 on error .... 抓到后作处理就不会退出了
有没有全局调用的,就写一个on error 就够了,而不用每个过程都写?[/quote] 我知道的好像没有哦, 不过每个函数里面抓错是一个好的编程习惯
  • 打赏
  • 举报
回复
引用 1 楼 clear_zero 的回复:
你要抓错误。 on error .... 抓到后作处理就不会退出了
有没有全局调用的,就写一个on error 就够了,而不用每个过程都写?
clear_zero 2014-07-17
  • 打赏
  • 举报
回复
你要抓错误。 on error .... 抓到后作处理就不会退出了

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧