2014-09-24 4 views
0

.Net Framework 2.0 응용 프로그램을 .NET Framework 4.0으로 마이그레이션하고 있습니다..Net 4.0 및 .Net 2.0의 예외 코드 변경

예외가 발생했을 때 예외 코드를 가져 오는 프로그램이 있습니다. 그러나 불행하게도 예외 코드는 .Net Framework 2.0과 .Net Framework 4.0 사이에서 다릅니다. 다음은 내 코드가 닷넷 프레임 워크 2.0 "-532459699"

try 
{ 
     throw new DirectoryNotFoundException(); 
} 
catch (Exception ex) 
{ 
     MessageBox.Show(Marshal.GetExceptionCode().ToString()); 
} 

위의 프로그램 복귀이며, 반환 "-532462766"닷넷 프레임 워크 4.0

의 예외 코드를 얻을 방법이 있나요 .NET Framework 2.0과 동일하게?

+0

Marshal.GetExceptionCode는 일반 관리 예외에 대해서도 작동합니까? – Dirk

+0

MSDN의 비고 부분에 :'GetExceptionCode가 구조화 된 예외 처리 (SEH)만의 컴파일러 지원에 노출되었습니다' – Magnus

+0

너무 다른 예외가 표시됩니다. http://stackoverflow.com/a/9164144/426894 및 http를 참조하십시오. : //stackoverflow.com/a/19919001/426894 – asawyer

답변

2

이는 관리 예외 처리를위한 것이 아닙니다.

이 관리되지 않는 메모리를 할당하는 관리되지 않는 메모리 블록을 복사하고, 관리되지 않는 형식뿐만 아니라 다른 기타 방법으로 관리 변환 방법의 컬렉션을 제공합니다 : 당신이 Marshal 클래스의 설명을 보면 꽤 분명히 있다고한다 비 관리 코드와 상호 작용할 때 사용됩니다.

왜 다른 코드가 생깁니 까? 예외 코드가 관리되는 응용 프로그램에서 나오지 않기 때문에 실제로 논의 할 가치가 없습니다. 중요성은 다음과 같이 될 것이다 처리 할 수있는 올바른 방법입니다 :

try { } 
catch (DirectoryNotFoundException ex) { } 

지금 당신은 발생 된 예외는 아니었다 그을 알고 .

1

묵시적 질문에 대한 답변 "왜이 코드가 다른가요?"입니다. "구현의 세부 사항은 신경 쓰지 않아도됩니다.".

실제 질문이 인 경우 어떻게 예외를 식별 할 수 있습니까?, How to get Exception Error Code in C#을 참조하십시오.