我想为我的桌面应用程序构建一个错误处理程序。代码在下面列出的类ZipCM.ErrorManager
中。构建一个真正的错误处理程序
我在找的是输出的文件没有给我StackTrace的正确信息。
这里是我想使用它:
Try
'... Some stuff here!
Catch ex As Exception
Dim objErr As New ZipCM.ErrorManager
objErr.Except = ex
objErr.Stack = New System.Diagnostics.StackTrace(True)
objErr.Location = "Form: SelectSite (btn_SelectSite_Click)"
objErr.ParseError()
objErr = Nothing
End Try
这里是类:
Imports System.IO
Namespace ZipCM
Public Class ErrorManager
Public Except As Exception
Public Location As String
Public Stack As System.Diagnostics.StackTrace
Public Sub ParseError()
Dim objFile As New StreamWriter(Common.BasePath & "error_" & FormatDateTime(DateTime.Today, DateFormat.ShortDate).ToString().Replace("\", "").Replace("/", "") & ".log", True)
With objFile
.WriteLine("-------------------------------------------------")
.WriteLine("-------------------------------------------------")
.WriteLine("An Error Occured At: " & DateTime.Now)
.WriteLine("-------------------------------------------------")
.WriteLine("LOCATION:")
.WriteLine(Location)
.WriteLine("-------------------------------------------------")
.WriteLine("FILENAME:")
.WriteLine(Stack.GetFrame(0).GetFileName())
.WriteLine("-------------------------------------------------")
.WriteLine("LINE NUMBER:")
.WriteLine(Stack.GetFrame(0).GetFileLineNumber())
.WriteLine("-------------------------------------------------")
.WriteLine("SOURCE:")
.WriteLine(Except.Source)
.WriteLine("-------------------------------------------------")
.WriteLine("MESSAGE:")
.WriteLine(Except.Message)
.WriteLine("-------------------------------------------------")
.WriteLine("DATA:")
.WriteLine(Except.Data.ToString())
End With
objFile.Close()
objFile = Nothing
End Sub
End Class
End Namespace
什么是happenning是.GetFileLineNumber()
从objErr.Stack = New System.Diagnostics.StackTrace(True)
让我Try..Catch
块内的行号。实际上,这是确切的行号。
对这里发生了什么的任何想法,以及我如何捕获错误发生的实际行号?
我很困惑。我的代码应该放在哪里? – 2010-06-23 18:50:16
@Kevin:请参阅我的更新答案,在前面加上'Edit:'作为更好的解释。 – 2010-06-23 19:23:17
对不起,但这只会带来错误。关于.StackTrace是一个字符串,而GetFrame不是它的方法或属性... – 2010-06-26 12:46:05