オブジェクトの破棄を保証する
スポンサーリンク
不要になったリソースはその時点で破棄すれば良いわけですが、何らかの原因で例外が発生した場合を考えると安易に実装できません。ここでは、オブジェクトの破棄を保証するための方法を紹介します。
サンプルコード
以下にサンプルコードを示します。
VB6 の場合は、On Error GoTo ステートメントを使ってエラーハンドラを作成します。実行時エラーが発生した場合は、指定したラベルへ制御を移すので、ここでオブジェクトの解放などを行います。
VB6.0 以前
' ADODB.Connection の新しいインスタンスを生成する
Dim cAdoConnection As ADODB.Connection
Set cAdoConnection = New ADODB.Connection
' データベース接続を開く
Call cAdoConnection.Open("...省略...")
' 実行時エラーが発生した場合は Finally ラベルに制御を移す (接続を確実に切断するため)
On Error GoTo Finally
'
' ここで cAdoConnection を使用する
'
Finally:
' cAdoConnection を閉じる
If Not cAdoConnection Is Nothing Then
If cAdoConnection.State <> ObjectStateEnum.adStateClosed Then
cAdoConnection.Close
End If
Set cAdoConnection = Nothing
End If
ファイル入出力やデータベースなどのオブジェクトを使用した場合の Close を保証するには、On Error GoTo ステートメントを使ってエラーハンドラを作成します。実行時エラーが発生した場合は、指定したラベルへ制御を移すので、ここでオブジェクトの解放などを行います。
VB6.0 以前
' 使用可能なファイル番号を取得する
Dim iFileNumber As Integer
iFileNumber = FileSystem.FreeFile()
' ファイルを開く
Open "C:\Hoge.txt" For Input As #iFileNumber
' 実行時エラーが発生した場合は Finally ラベルに制御を移す (ファイルを確実に閉じるため)
On Error GoTo Finally
'
' ここでファイルの入出力を行う
'
Finally:
' ファイルを閉じる
Close #iFileNumber
関連するリファレンス
準備中です。
