強制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: