2017-10-12 25 views
0

私は古いVB6アプリケーションをVB.NETに取り直しています。コードの品質を改善したいと思います。 Open()とClose()メソッドが例外をスローするかどうか、ADODB.RecordSetのAPIドキュメントが見つかりません。Try/CatchブロックでADODB.RecordSet.Open/Closeメソッドをラップする必要がありますか?

を使用する場合は、Try/Catchブロックでこれら2つの方法をラップする必要がありますか?彼らはいくつかの例外を投げますか?

しかし、両方とも外部リソースであるデータベースにアクセスしているため、論理的に例外をスローする必要があります。

+1

はい、これらは例外をスローします。すべてのADOメソッドが行います。 – GSerg

+1

私は無害なコンテキスト(期待どおりに動作しない場合、 "永続的な"ダメージを与えない)で試してみることをお勧めします。 –

+2

ラッピングオープンは大丈夫です。閉じる、うーん、実際にそれをどう扱うつもりですか?それをしないでください。 –

答えて

0

はい私はコードをラップしましたが、うまくいきます。

Public Sub CloseRecordSet(ByRef recordSet As ADODB.Recordset) 
    Try 
     If recordSet.State = ADODB.ObjectStateEnum.adStateOpen Then 
      recordSet.Close() 
     End If 
    Catch ex As Exception 
     Dim funcName As String = System.Reflection.MethodInfo.GetCurrentMethod().Name 
     SV_DZS_Utils.PrintToConsole(funcName & ": " & ex.Message & ", Source: " & ex.Source & ", StackTrace: " & ex.StackTrace) 
    Finally 
     recordSet = Nothing 
    End Try 
End Sub 

Public Sub OpenRecordSetForwardReadOnly(ByRef recordSet As ADODB.Recordset, ByVal sql As String, ByRef dbConn As ADODB.Connection) 
    Try 
     recordSet.Open(sql, dbConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, ADODB.CommandTypeEnum.adCmdText) 
    Catch ex As Exception 
     Dim funcName As String = System.Reflection.MethodInfo.GetCurrentMethod().Name 
     SV_DZS_Utils.PrintToConsole(funcName & ": " & ex.Message & ", Source: " & ex.Source & ", StackTrace: " & ex.StackTrace) 
    End Try 
End Sub 

Public Sub OpenRecordSetDynamic(ByRef recordSet As ADODB.Recordset, ByVal sql As String, ByRef dbConn As ADODB.Connection) 
    Try 
     recordSet.Open(sql, dbConn, ADODB.CursorTypeEnum.adOpenDynamic, , ADODB.CommandTypeEnum.adCmdText) 
    Catch ex As Exception 
     Dim funcName As String = System.Reflection.MethodInfo.GetCurrentMethod().Name 
     SV_DZS_Utils.PrintToConsole(funcName & ": " & ex.Message & ", Source: " & ex.Source & ", StackTrace: " & ex.StackTrace) 
    End Try 
End Sub 
関連する問題