0

強制SqlDataReader的に例外をスローする方法はありますか? SqlDataReader特に値を読み取ろうとするときに、例外が発生し、例外をスローせずに関数が途中で終了するという非常に問題のある動作があるようisDBNullです。

Microsoft.VisualBasic.CompilerServices.Conversions(2013 年 5 月 10 日) 編集: さらによく考えてみると、の動作が静かに例外をキャッチしているように見えます。

そして明らかに、例外のスケルチはデバッグ中にのみ発生します-私はリリースビルドを実行しましたが、例外は間違いなくそこに現れました. したがって、明らかにVisual Studioデバッグのプロパティにすぎません。

(2013 年 5 月 14 日) EDIT2: SqlDataReader インデックスが列名と一致しない、try/catch ブロック動作のないデバッグで同様のキャッチが見つかりました。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' への変換は無効です。" Source="Microsoft.VisualBasic" StackTrace: at Microsoft.VisualBasic.CompilerServices.Conversions.ToDate(Object Value) at DataAccess.MyDAO.GetData() in C:\Users\me\Documents\Visual Studio 2008\VS 2008 Projects\General \DataAccess\DataAccess\MyDAO.vb: 603 行目 InnerException:

4

0 に答える 0