§11 ファイル処理(1)2 | プログラミング実習 |
【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形式で圧縮されたファイル。
§11 ファイル処理(1)2 | Copyright©2008 Hiroshi Masuda |