为了更好的维护和完善程序,想每次把错误记录下来,包括时间,和提示错误信息。
如题,谢谢!
如题,谢谢!
解决方案 »
- VBMSCOMM串口通信,每次大概有2K多点数据,然后要对数据分析处理,放在什么事件理比较好,又不影响传输呢
- 关于com加载项!
- 如何通过监听某个端口获得端口数据信息及与该端口连接的ip。。。
- 数据库安段显示技巧
- 可不可以用API将一个MDI的子窗体菜单与MDI主窗体的菜单合并?(在线)
- 有没有坐标轴控件啊
- 我在picturebox里加入了一个label控件,我能保存在picturebox中画的曲线,但是label中的内容没有被保存下来,只有我画的曲线,怎样才能把l
- 利用ADO方式如何判断某个表中数据库中是否存在?
- 如何把DataEnvironment1.datasorce设为app.path那种
- 如何在应用程序中实现定期提示?
- 简单的问题,答者有分^-^
- 上海诠山网络科技有限公司招聘
你可以写一个函数专门记录错误。
用FSO写到一个文件中,命名为X.log
Open 文件位置 For Append AS #1
Print #1,错误信息
Close #1
Output方式会覆盖原来内容,所以用Append
文件号最好动态生成,以免和错误代码未关闭的文件号冲突我个人的理解,仅供参考
使用app
的LogEvent 方法
在应用程序的日志目标中,把某个事件记入日志。在 Windows NT 平台上,该方法会把内容写到 NT 的 Event 日志中。在 Windows 95 平台上,该方法会把内容写到 LogPath 属性指定的文件中。按照缺省规定,如果不指定文件,事件被写入 vbevents.log 文件。语法object.LogEvent (logBuffer, eventType)部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
logBuffer 必需的。写到日志中的字符串。
eventType 可选的。Long 整数,它指定了事件的类型,如下列“设置值”中所示。
设置值eventType 的设置值是:常数 值 描述
vbLogEventTypeError 1 错误。
vbLogEventTypeWarning 2 警告。
vbLogEventTypeInformation 4 信息。
说明可以在 Win32 SDK 中得到记入日志的准则,不管是记入到 NT 的 Event 日志中,还是(在 Windows 95 平台上)记入到 LogPath 属性所指定文件,都应该遵守那些准则。
.... '这是代码段 exit subaErr:
if err.number=1988 then '能检测处理错误号
showError "发生xxxxx错误,请检查xxx!"
else
showError
end ifend sub
'**显示错误信息框
'如果传递了错误提示文本,直接显示 msgbox ;否则将错误写入 .log 文件,然后显示错误vb的提示
Sub ShowError(Optional ByVal msgText As String)
If len(msgText) = 0 Then
msgText = Err.Description & "。"
ProgramErrLog "时间:" & Date & " " & Time & vbCrLf & "代号:" & Err.Number & vbCrLf & "描述:" & msgText & vbCrLf
Err.Clear
End If
MsgBox msgText, vbOKOnly + vbCritical, "错误!"
End Sub'写错误日志
Private Sub ProgramErrLog(ByVal ErrText As String)
On Error Resume Next Dim logFile As String, fH As Integer
logFile = replace(app.path & "\RunErr.log","\\","\")
fH = FreeFile()
If Dir(logFile) = "" Then
Open logFile For Output As #fH
Else
Open logFile For Append As #fH
End If
Print #fH, ErrText
Close #fH
End Sub
然后看看是什么反应,然后检查 app.path 中的 runerr.log 文件,是不是写入了内容。sub command1_click() on error goto aErr
dim a as byte
a=1000 '这句会造成溢出,但我们不特意去捕获 exit subaErr:
showError end sub
showError 这个函数是自适应的。如果你不告诉它要显示什么错误,它就自动显示vb刚刚产生的错误;如果有些错误你需要告诉它,比如对象不能创建,你就给它传递一个参数文本。你可以修改它,任何时候都写日志(现在只对未知错误写 .log 文件)
为了能让所有的模块使用,我写在专门的模块里.
对于那些错误提示字符串,我写在资源文件了.
当然编程的时候我不会马上写到资源文件里面去,而是编写一个列表,纸头上的或者EXCEL表格什么的,不用ACCESS,太规范.
写错误日志
Private Sub ProgramErrLog(ByVal ErrText As String)
On Error Resume Next Dim logFile As String, fH As Integer
logFile = replace(app.path & "\RunErr.log","\\","\")
fH = FreeFile()
If Dir(logFile) = "" Then
Open logFile For Output As #fH
Else
Open logFile For Append As #fH
End If
Print #fH, ErrText
Close #fH
End Sub粘贴后,好像在我程序路径下没有生产日志文件阿? 后来我按照上面的名字在程序目录下,自己建了一个好像还是不能写入?
是不是我理解错了,谢谢
'如果传递了错误提示文本,直接显示 msgbox ;否则将错误写入 .log 文件,然后显示错误vb的提示
Sub ShowError(Optional ByVal msgText As String)
If len(msgText) = 0 Then
msgText = Err.Description & "。"
ProgramErrLog "时间:" & Date & " " & Time & vbCrLf & "代号:" & Err.Number & vbCrLf & "描述:" & msgText & vbCrLf
Err.Clear
End If
MsgBox msgText, vbOKOnly + vbCritical, "错误!"
End Sub这段一旦加上,就说缺少END IF ?但是您的代码里面有阿?
前面那个用来被调用,然后它在需要时会再调用后面这个函数写 .log 文件