我有一个日志表,我需要插入导致代码错误的查询。 我有一个共同的功能“WritetoLog”。
Catch ex As Exception
writetolog(ex)
End Try
我的问题来自ex如何进行导致错误的查询。
e.g。如果insert命令给出异常,我应该像这样
SQL Query导致错误:Query + ex.Message
SQL查询导致错误:插入临时(“1”,“Anitha”,“TeamLeader”,)+'''附近的语法错误
请帮帮我。提前谢谢。
此致 Nilofar
答案 0 :(得分:1)
而不是捕获Exception
捕获最具体的异常类型。对于SQL Server,这将是SqlException
。这样可以访问更详细的信息(例如Errors
属性)。
如果派生的类型不包含您需要的信息,则需要自行添加。例如。捕获特定类型,创建自己的异常类型设置InnerException
到原始异常,并在抛出之前保存查询。
然后捕获处理错误的异常类型。
答案 1 :(得分:0)
为了扩展理查德所说的内容,您可以在.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
然后您可以在错误记录代码中执行此操作:
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