VB のたまご

作成日: 2015/12/03, 更新日: 2015/12/03


FileNotFoundException について

概要

  •  FileNotFoundException は、読み込もうとしたファイルのパスが、不正な場合に発生する例外エラーです。 実在するかどうか事前チェックすることが、解決の糸口につながります。


スポンサーリンク


事例と対処方法

  •  以下のサンプルは、意図的に例外エラーを発生させるコードです。 実際の業務プログラムでは、このような簡単なコードではないと思いますが、例外発生させている、直接的な原因となる部分として参考になるはずです。 また、本例外エラーが発生してしまう原因となった、根本的な原因となる別の例外エラーが、さらに奥深くにいる場合があります。 (本例外エラーは間接的に影響を受けて発生してしまったもので、本当の原因となる例外エラーを食い止めることで、本例外エラーも直る場合があります。)

  •  このような組み合わせのパターンは、本例外エラーに限らず、他の例外エラー全般にも言えることですが、そんなに頻繁に出くわすものではないと思いますので、 そういう場合もあるということだけ、覚えておいていただけると解決しやすくなるのではと思います。

  •  また、記載の対処方法は、あくまでも一例です。 他の対処方法の方が、その業務プログラムにとってベストプラクティスとなる場合もありますので、検討材料の1つという程度に確認していただければと思います。

  • スポンサーリンク



  • File.ReadAllText
  • Imports System.IO
    
    Dim logFile As String = "C:\Temp\myapp2.log"
    Dim logData As String = File.ReadAllText(logFile)
    
    ' 例外エラー
    System.IO.FileNotFoundException: ファイル 'C:\Temp\myapp2.log' が見つかりませんでした。
    ファイル名 'C:\Temp\myapp2.log' です。'C:\Temp\myapp2.log'
       場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
       場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
       場所 System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
       場所 System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost)
       場所 System.IO.File.ReadAllText(String path)
    
    ' 対処方法
    Dim logFile As String = "C:\Temp\myapp2.log"
    If File.Exists(logFile) Then
        Dim logData As String = File.ReadAllText(logFile)
    End If
    
  •  指定したファイルのフォルダ階層やファイル名に間違いが無いか、前処理で未作成のまま渡していないか、などが考えられます。 または、実在するファイルのパスを指定しているが、そのファイルのアクセス権が拒否設定になっている場合も本例外エラーが発生する可能性があるので、 エクスプローラ等からアクセス権の確認をしてみるのも手です。

  •  最後までこの記事を読んでいただき、ありがとうございました。

  • スポンサーリンク