2011-09-14 17 views
0

try-catchブロックで関数を実行しようとしているときにFileNotFoundExceptionが発生します。私はFileNotFoundExceptionをキャッチしようとしましたが、無駄です。それがなぜこれをするのか誰にでも教えてもらえますか?FileNotFoundExceptionがスローされましたがキャッチされません

public static bool IsKeyValid(string path) 
{ 
    bool rVal = false; 

    try 
    { 
     Stream stream = File.Open(path + "\\data.bin", FileMode.Open); 
     BinaryFormatter bf = new BinaryFormatter(); 

     ValidKey vk = (ValidKey)bf.Deserialize(stream); 
     if (vk.SerialNumber != null) 
      rVal = true; 
     else 
      rVal = false; 

    } 
    catch (Exception fnfe) 
    { 
      rVal = false; 
    } 
    return rVal; 
} 
+1

ファイルが実際に存在するかどうかを確認しましたか? – dtb

+0

パス変数には何を渡していますか? –

+2

最初に、パス変数をダブルチェックしてください。 2番目:Path.Combineメソッドを使用します。 – Dariusz

答えて

2

私の推測では、それが最初に投げだとき、デバッガでFileNotFoundExceptionに侵入するが、それは正しくcatchブロックでキャッチされるだろうということだということです。例外のデバッガ設定を変更することもできますし、デバッガの外で実行することもできます。

0

キャッチあなたはすべての例外をキャッチする必要がありますが、あなたは、Visual Studioが設定されている方法に応じて、それはまだで、ハンドラのキックの前に、あなたにデバッグ時にチャンスを与えるために例外を発生させる行に停止することがあります。

これを制御するには、メニューDebug|Exceptionsにアクセスしてください。

関連する問題