.net 从引发的异常中检索查询
我有一个日志表,需要在其中插入导致代码错误的查询。 我有一个公共函数“WritetoLog” 我的问题来自ex,我如何接受导致错误的查询 e、 g.如果insert命令出现异常,我会得到如下结果 SQL查询导致错误:查询+ex.消息 SQL查询导致错误:Insert into temp(“1”、“Anitha”、“TeamLeader”和“)+附近语法不正确”) 请帮帮我。提前谢谢 问候.net 从引发的异常中检索查询,.net,vb.net,exception-handling,.net,Vb.net,Exception Handling,我有一个日志表,需要在其中插入导致代码错误的查询。 我有一个公共函数“WritetoLog” 我的问题来自ex,我如何接受导致错误的查询 e、 g.如果insert命令出现异常,我会得到如下结果 SQL查询导致错误:查询+ex.消息 SQL查询导致错误:Insert into temp(“1”、“Anitha”、“TeamLeader”和“)+附近语法不正确”) 请帮帮我。提前谢谢 问候 Nilofar而不是捕获异常捕获最具体的异常类型。对于SQL Server,这将是一个很好的例子。这将允许访
Nilofar而不是捕获
异常
捕获最具体的异常类型。对于SQL Server,这将是一个很好的例子。这将允许访问更详细的信息(如财产)
如果最派生的类型不包含您需要的信息,那么您需要自己添加它。例如,捕获特定类型,创建您自己的异常类型,将InnerException
设置为原始异常,并在抛出该异常之前保存查询
然后捕获处理错误的异常类型。要扩展Richard所说的内容,您可以在.NET中创建自己的异常消息。您可能希望在异常消息中嵌入查询字符串,并将捕获的异常作为异常的
InnerException
传递。例如:
Sub DoStuffInToTheDatabase()
Dim sql As String
Dim dataAccess As New MyDataAccessComponent()
Dim dt As DataTable
sql = "Select Top 10 * From Orders"
Try
dt = dataAccess.GetDataTable(sql)
Catch ex As Exception
Throw New DataException("An exception was thrown with this query: " _
& sql, ex) ' <== You put ex into your new DataException'
End Try
End Sub
有关i=0到e.Errors.Count-1 errorMessages+=“Index#”&i.ToString()&ControlChars.Cr&“Message:&e.Errors(i).Message&ControlChars.Cr&e.Message&“NativeError:&e.Errors(i))的更多属性,请参见.NativeError&ControlChars.Cr&“Source:&e.Errors(i).Source&ControlChars.Cr&“SQLState:&e.Errors(i).SQLState&ControlChars.Cr我使用的下一个i提供程序是oledb。。。errorMessages我也需要查询。@Nilofar:需要识别异常类型,并查看其属性。然后我必须将sqlquery作为参数传递。然后在整个模块的所有函数中,我还需要传递sqlquery。那将是更多的工作。非常感谢你真诚的努力。。。一切都很好保持微笑……:)
Sub DoStuffInToTheDatabase()
Dim sql As String
Dim dataAccess As New MyDataAccessComponent()
Dim dt As DataTable
sql = "Select Top 10 * From Orders"
Try
dt = dataAccess.GetDataTable(sql)
Catch ex As Exception
Throw New DataException("An exception was thrown with this query: " _
& sql, ex) ' <== You put ex into your new DataException'
End Try
End Sub
Sub WriteErrorLog(ex As Exception)
Dim errMsg As String
errMsg = ex.Message
If Not ex.InnerException Is Nothing Then
errMsg += " " & ex.InnerException.Message
End If
'... '
End Sub