質問なのですが、よろしくお願い致します。
ファイルに空白行があった場合、任意に例外を発生させることをしているのですが、
(例外処理内容:ファイルにログを出力する)
例外が2回キャッチされているようで、2回目にファイル(ログファイル)は既に開かれています。というエラーが出ますが、以下のソースでは、呼出元と呼び出されたメソッドともに例外を処理してしまうのでしょうか?
また、どう改善したらいいでしょうか?
ご教授よろしくお願い致します。
呼出元
public Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
Dim cls As New testClass
cls.timer1()
Catch e as Exception
'ログファイル出力
End Try
End Sub
呼び出されるメソッド
Public Sub Timer1()
try
FileOpen(1,"ファイルパス",OpenMode.Input)
if Trim(LineInput(1)) = "" Then
FileClose(1)
Throw New Exception
End If
Catch e as Exception
'ログファイル出力
End Try
End Sub
Timer1メソッドのtry節でFileOpenを使ってますがこれをFileCloseしてませんよね
2回目にTimer1メソッドにきたとき 空行の条件が成り立っていなければ
ファイルは開いたままですよ
Timer1メソッドに引数を設定して ファイル番号を渡すようにします
この引数が0ならFileOpenを実行 0以外ならFileOpenは実行しないといった具合にして見ましょう
Sub Timer1(ByRef FF as Integer )
try
' 引数が0なら ファイルを開く
if FF = 0 then
FF = FreeFile
FileOpen( FF, "ファイルパス", File.Open)
end if
' 空行かのチェック
if Trim(LineInput(FF) ) = "" then
FileClose(FF)
FF = 0
Throw NEW Exception
end if
catch ex as Exception
end try
End Sub
といった具合でしょう
お礼
早速のご回答ありがとうございます! 参考にコーディングし直してみます。 ありがとうございました☆