VB6オブジェクトの破棄を保証する

スポンサーリンク

不要になったリソースはその時点で破棄すれば良いわけですが、何らかの原因で例外が発生した場合を考えると安易に実装できません。ここでは、オブジェクトの破棄を保証するための方法を紹介します。

サンプルコード

以下にサンプルコードを示します。

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

関連するリファレンス

準備中です。

スポンサーリンク