プロが教える店舗&オフィスのセキュリティ対策術

質問なのですが、よろしくお願い致します。
ファイルに空白行があった場合、任意に例外を発生させることをしているのですが、
(例外処理内容:ファイルにログを出力する)
例外が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

A 回答 (1件)

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

といった具合でしょう
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!
参考にコーディングし直してみます。
ありがとうございました☆

お礼日時:2007/10/12 17:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!