2011-09-14 3 views
0

try-catch 블록이있는 함수를 실행하는 동안 FileNotFoundException이 발생합니다. FileNotFoundException을 잡으려고 시도했지만 아무 소용이 없습니다. 아무도 왜 이렇게하는지 말해 줄 수 있습니까?FileNotFoundException을 throw하고 있지만 catch하지 않음

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

먼저 : 경로 변수를 다시 확인하십시오. 두 번째 : Path.Combine 메서드를 사용하십시오. – Dariusz

답변

2

내 생각 엔 그것이 처음에 던져 때 디버거에 FileNotFoundException에 침입하지만, 올바르게 catch 블록에 의해 잡힐 것이라는 점이다. 예외에 대한 디버거 설정을 변경할 수 있습니다. 물론 디버거 외부에서 실행할 수도 있습니다.

0

캐치 모든 예외를 잡을 것입니다,하지만 당신은 Visual Studio를 구성한 방법에 따라, 그것은 여전히 ​​핸들러 차기 전에 당신에게 디버깅의 기회를 제공하기 위해 예외를 발생 라인에 중지 될 수 있습니다.

이를 제어하려면 Debug|Exceptions 메뉴로 이동하십시오.

관련 문제