2010-09-22 5 views
5

.NET Excel addin에 처리되지 않은 예외 처리기를 연결하려고합니다. 문제는 예외 핸들러가 호출되지 않는다는 것입니다..NET에서 처리되지 않은 예외를 트래핑하는 것은 addins (XLL)를 능가합니까?

AppDomain.CurrentDomain.UnhandledException가 작동하지 않습니다. 절대로 이벤트를 발생시키지 않습니다.

응용 프로그램 엑셀 추가 코드에서 응용 프로그램이 null이므로 응용 프로그램 .Current.DispatcherUnhandledException을 사용할 수 없습니다.

어떻게 처리되지 않은 예외 처리기를 연결합니까?

+0

XLL은 관리되지 않는 코드를 기반으로하는 이전 스타일의 추가 기능입니다. 예, 관리되지 않는 코드가 불면 UnhandledException이 반드시 실행되지는 않습니다. 엑셀이 먼저 단계를 밟을 것이다. –

+0

하지만 그것의 관리되지 않는 코드가 날아간 다. 예외를 던지는 addin 내의 .NET 코드. 왜 갇혀 있지? – Pradeep

+0

어떤 유형의 추가 기능입니까? 그것은 IDTExtensibility2 기반의 추가 기능인가요? VS 2005/2008/2010의 프로젝트 템플릿 중 하나를 사용하여 VSTO (Office 용 Visual Studio Tools)를 사용하여 구축 되었습니까? XLL 추가 기능은 엄격히 * 관리되지 않는 * 있으므로 실행중인 추가 기능 유형이 될 수 없습니다. –

답변

3

응용 프로그램이 실제로 관리되지 않는 응용 프로그램이므로 사용자가 못할 수 있습니다. 당신은 단지 벗겨 내기 영역 주위에 try/catch 블록을 놓아야 할 수도 있습니다.

+4

수정하십시오. Excel이 호출자이기 때문에 Exception을 처리하는 것은 Excel에 달려 있습니다. Excel에서 처리하는 경우 처리되지 않은 예외는 없습니다. Excel이 처리하지 않으면 Excel이 충돌합니다. 그것은 간단합니다. 어느 쪽이든, 관리되는 코드 실행은 COM Interop 장벽에서 끝납니다. 키는 모든 "비정상적인 영역"을 감싸는 것이 아니라 Excel에서 코드를 호출하는 모든 진입 점에서 오류 처리를 사용하는 것입니다. –

+0

백그라운드 스레드 및 비동기 라이브러리를 사용하는 경우에만 문제가 발생합니다. 예쁜 광경이 아닙니다! –

관련 문제