§11 ファイル処理(1)2 プログラミング実習
 back next 

【3】 エラー処理

 ファイルを読み込むため[読み込み]ボタンをクリックしたとき、対象となるファイルが存在しないとエラーになり、実行が中断され停止する。アプリケーションやゲームなどのプログラムでは、ユーザの操作ミスなどで停止しないような対策が必要である。
 VBには、構造化例外処理というエラーを処理する機能が用意されている。

Try 処理 Catch エラー処理 End Try
 エラーの発生が考えられる処理 をTryとCatchの間に記述する。この処理 にエラーが発生したとき、対策として実行するエラー処理 をCatchとEnd Tryの間に記述する。If文と同じような構造である。


操作 15 ファイルの読み込みのためのメソッドに下線部のようなエラー処理を追加する。

    Private Sub ReadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReadButton.Click
        Try
            Data1.Text = My.Computer.FileSystem.ReadAllText(FName.Text)
        Catch ex As Exception
            MsgBox("ファイルが読み込めませんでした。")
        End Try
    End Sub

 Tryと入力すると、「Catch ex As Exception」と「End Try」が自動的に挿入される。

結果 実行して、ファイル名を別のもの(例えば、test1.txt)に変更してから[読み込み]ボタンをクリックする。メッセージボックスにエラーメッセージが表示されるが、プログラムは停止しない。

 単純に、「ファイルが存在しない」というエラーを発生させたが、ファイル読み込み時に発生するエラーはほかにもある。例えば、別の処理と衝突して装置にアクセスできない等である。
 ここでは、すべてのエラーに対してエラー処理(メッセージ表示)が実行される。



○ エラー処理の例

 計算(1)(2)のわり算で、0で割った場合にエラーが発生する。このような場合のためにもエラー処理を追加しておくことができる。

    Private Sub WaruButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WaruButton.Click
        Dim x1 As Double, x2 As Double
        x1 = Val(Data1.Text)
        x2 = Val(Data2.Text)
        Try
            Kotae.Text = Str(x1 / x2)
        Catch ex As Exception
            MsgBox("計算できませんでした。")
        End Try
    End Sub

 ファイルが存在しないなど、特定のエラーに対してメッセージを表示するには、Catch以下を次のようにする。

    Private Sub ReadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReadButton.Click
        Try
            Data1.Text = My.Computer.FileSystem.ReadAllText(FName.Text)
        Catch ex As System.IO.DirectoryNotFoundException
            MsgBox("フォルダが見つかりませんでした。")
        Catch ex As System.IO.FileNotFoundException
            MsgBox("ファイルが見つかりませんでした。")
        Catch ex As System.IO.IOException
            MsgBox("I/Oエラーが発生しました。")
        End Try
    End Sub

 ただし、別のエラーが発生したときは対応できないのでプログラムが停止するので、次のようにすべてのエラーに対応するCatchを追加しておく必要がある。

        Catch ex As System.IO.IOException
            MsgBox("I/Oエラーが発生しました。")
        Catch ex As Exception
            MsgBox("ファイルが読み込めませんでした。")
        End Try
    End Sub


○ ファイル名のルール

 ファイル名は、ファイルに付ける名前である。
 Windowsでファイル名に使えない文字は、次の9種類の半角文字である。
  \ / : * ? " < > |

 ファイル名の末尾には、ファイルの種類をあらわす「拡張子」と呼ばれる数文字(3文字が多い)のアルファベット(半角文字)を付ける。次に、拡張子の例を示す。
  bak … バックアップファイル。
  exe … Windowsの実行ファイル。
  bmp … Windowsの標準的な静止画像ファイル。
  txt … プレーンテキスト。
  gif … 256色まで扱える静止画像ファイル。
  jpg … JPEG形式で圧縮された静止画像ファイル。
  png … Portable Network Graphics形式で圧縮された静止画像ファイル。
  wav … Windowsの標準的な音声ファイル。
  mid … MIDIの音楽ファイル(SMFデータ)。
  mp3 … MP3形式で圧縮された音声ファイル。
  htm … Webページのファイル。「html」の場合もある。
  js  … JavaScriptのプログラム。
  mpg … Moving Picture Experts Group形式で圧縮された動画ファイル。
  zip … ZIP形式で圧縮されたファイル。
  lzh … LHA形式で圧縮されたファイル。



 back next 
 §11 ファイル処理(1)2 Copyright©2008 Hiroshi Masuda 

 

 

inserted by FC2 system