타사 소프트웨어 회사에서 제공 한 COM DLL을 사용하고 있습니다 (소스 코드가 없음). 나는 그들의 객체가 'JvmVersion'과 같은 속성 이름을 포함하기 때문에 Java를 사용하여 구현했는지 확실히 알고 있습니다.COM-dll 구성 요소를 호출 한 후 C# 예외가 디버거에서 catch되지 않습니다.
제공된 COM dll에 의해 도입 된 개체를 인스턴스화 한 후 내 C# 프로그램의 모든 예외를 VS 디버거에서 catch 할 수 없으며 예외가 발생할 때마다 기본 Windows 디버거 선택 대화 상자가 나타납니다. 전체 VisualStudio 디버깅 환경에서 디버그 모드에서). (1) VS에 의해 체포됩니다
throw new Exception("exception 1");
m_moo = new moo(); // Component taken from the COM-dll
throw new Exception("exception 2");
예외하고 "노란색 예외 창을"보여
는 설명합니다.예외 2는 "처리되지 않은 win32 예외가 myfile.vshost.exe [1348]에서 발생했습니다."라는 텍스트가 포함 된 "Visual Studio Just-In-Time Debugger"대화 상자를 엽니 다. 내 시스템에서 기존 VS 인스턴스 목록을 선택합니다.
"moo"개체의 인스턴스화가 C#의 예외 처리기 또는 그와 비슷한 것을 대체한다고 생각합니다. 내가 맞습니까? C#의 예외 처리기를 유지할 수있는 방법이 있습니까?
시도해보십시오. Debugger.Break()는 훌륭하게 작동합니다 - 실행을 일시 중지하고 현재 실행 된 행의 색을 지정합니다. NullReferenceException은 다른 예외와 마찬가지로 fubar입니다. –
괜찮습니다. try/catch로 NRE를 잡을 수 있는지 테스트하십시오. –