在VS2008调试期间,不需要的异常静噪

时间:2013-04-03 18:01:25

标签: vb.net visual-studio-2008 exception-handling .net-3.5 sqldatareader

有没有办法强制SqlDataReader抛出异常?似乎存在一个非常有问题的行为,其中SqlDataReader将有一个异常并导致它所处的函数过早结束而不抛出异常,特别是当它试图读取isDBNull值时。

(2013年5月10日)编辑:进一步思考,看起来Microsoft.VisualBasic.CompilerServices.Conversions的行为正在默默地捕捉异常。

显然,只有在调试时才会发生异常静音 - 我运行了一个发布版本,并且异常肯定在那里浮出水面。所以它只是Visual Studio调试的一个属性。

(2013/5/14)EDIT2:在没有try / catch块行为且SqlDataReader索引与列名不匹配的情况下,在debug中发现了类似的捕获。 IndexOutOfRangeException仅在使用“中断所有异常”调试设置时浮出水面。

更多详情:

Public Function GetData() As DataObj
    Dim sqlConn As New SqlConnection(ConnectionSettings.DBCon)
    Dim sqlCommand As New SqlCommand("an_sp", sqlConn)
    Dim sqlReader As SqlDataReader
    Dim dataObject As New DataObj

    sqlCommand.CommandType = CommandType.StoredProcedure

    sqlCommand.Connection.Open()
    sqlReader = sqlCommand.ExecuteReader

    While sqlReader.Read
        With dataObject
            'Exception thrown here in debugging
            .DateField = sqlReader("DateField")

        End With
    End While

    Return dataObject
End Function

发生了System.InvalidCastException   Message =“从类型'DBNull'转换为'Date'类型无效。”   来源= “Microsoft.VisualBasic程序”   堆栈跟踪:        在Microsoft.VisualBasic.CompilerServices.Conversions.ToDate(Object Value)        位于C:\ Users \ me \ Documents \ Visual Studio 2008 \ VS 2008 Projects \ General \ DataAccess \ DataAccess \ MyDAO.vb:line 603中的DataAccess.MyDAO.GetData()   InnerException:

0 个答案:

没有答案