Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从引发的异常中检索查询_.net_Vb.net_Exception Handling - Fatal编程技术网

.net 从引发的异常中检索查询

.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,这将是一个很好的例子。这将允许访

我有一个日志表,需要在其中插入导致代码错误的查询。 我有一个公共函数“WritetoLog”

我的问题来自ex,我如何接受导致错误的查询

e、 g.如果insert命令出现异常,我会得到如下结果

SQL查询导致错误:查询+ex.消息

SQL查询导致错误:Insert into temp(“1”、“Anitha”、“TeamLeader”和“)+附近语法不正确”)

请帮帮我。提前谢谢

问候
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