2009-06-19 4 views
18

장소 ThisDocument_Startup의 외부 워드 문서 수준 VSTO 솔루션의 곳이 코드 (클릭 이벤트와, 리본 버튼을 생성) :Word VSTO는 디버깅하지 않고 런타임시 예외를 삼 간다?

int zero = 0; 
int divideByZero = 10/zero; 

시작합니다 (Ctrl + F5)를 디버깅하지 않고, 결과 : 예외가 삼킨, 나머지 코드는 자동으로 실패합니다.

ThisDocument_Startup에 배치하면 예외 으로 표시되지만 다른 곳에 표시되지 않습니다. Microsoft의 VSTO 포럼 및 MSDN 설명서는 Try ... 느낌이들 것 같습니다. catch를 사용해야합니다. 이는 알려진 알 수없는 것의 큰 차이가 아닙니다. 알 수없는 미지의 경우는 어떻습니까? 나는 문제 해결 VSTO에 대한 글을 읽었습니다

//These don't work 
AppDomain.CurrentDomain.UnhandledException ... 
System.Windows.Forms.Application.ThreadException ... 

: 관리 코드에 대한 처리되지 않은 예외를 처리하는

에게 모든 일반적인 방법은 오피스 COM Interops와 관리 코드를 사용하여 아마도 때문에 VSTO의 작동하지 않는 것 항상 배치하려고하는 코드 Try ... 실제적으로 모든 것을 잡아라!

알려지지 않은 (현재 보이지 않고 침묵하는) 오류를 처리하는 더 좋은 방법이 있습니까?

+0

을 실행하여 시작하지 않을 때 알아내는 경우에 당신을 위해 물건을 이런 종류의 작업을 수행하고 편리합니다 유용한 PowerShell 스크립트도 있습니다 주의하십시오. Word에서 예외를 throw하는 추가 기능을 사용하지 않도록 설정하려고 시도합니다.) – Tangocoder

답변

10

실제로 Office 응용 프로그램을 실행하기 전에 환경 변수 VSTO_SUPPRESSDISPLAYALERTS를 0으로 설정하면 Office에서 예외가 표시되고 문제가있을 때 시작시 추가 기능을 종료하지 않습니다.

VSTO는 http://archive.msdn.microsoft.com/vstotroubleshooter 에서 작업하는 vstotroubleshooter.ps1 setdbg 설정을 할 것입니다 당신을위한 VSTO_SUPPRESSDISPLAYALERTS의 ENV 변수

+1

http://archive.msdn.microsoft.com/vstotroubleshooter 링크가 작동하지 않습니다. 그것은 "아카이브 갤러리가 폐기되었습니다." – N30

0

얻을 수 있습니다 ************ 예외 텍스트 ************ System.DivideByZeroException : 0으로 나누려고했습니다.

앱 수준 추가 기능 프로젝트입니다.

문서 수준 맞춤 설정 프로젝트에서만이 기능이 표시됩니까? 또한 단어로만 또는 Excel에서도 이러한 현상이 발생합니까?

+0

Word의 Doc 수준 프로젝트에만 내 부정확성에 대해 사과드립니다. –

2

나는 문제가 단지 약 예외에 격리 된 생각 "을 추가 한 사용자 인터페이스"- 직접 설정은 여기로 (2007 워드) 일어나는 :

Word 옵션> 고급> 일반>은 " 추가 기능 사용자 인터페이스 오류 "

+0

Word 2003에 해당하는 옵션이 있는지 알고 있습니까? MS Word 응용 프로그램 수준의 VSTO 추가 기능에서 작동하는 적절한 예외 처리를 얻으려고 애쓰는 중입니다. 귀하의 질문에 예외 처리기를 추가했지만 트리거하지 않습니다 ... –

+0

2003 년에 하나도 몰라요. Office 2007의 VSTO 응용 프로그램을 위해 우리는 신중하게 시도해야했습니다. 로깅 및 알 수없는 예외에 대한 안전 제거. –

+0

감사합니다. Mike. 귀하의 질문에 대한 의사 수준 추가 기능에 대한 통지. 응용 프로그램 수준의 추가 기능을 수행 했습니까? VSTO 응용 프로그램 수준 추가 기능에서 작동하는 전역 오류 처리기를 관리 했습니까? 아니면 모두에 대해 try/catch를 넣어야 했습니까? –

0

Word의 응용 프로그램 수준 추가 기능에서 동일한 문제가있었습니다.

당신은 F5와 비주얼 스튜디오에서를 실행하여 추가 기능을 실행하는 경우, 당신은 항상 VS (예를 들어 2008 SP1)의 "사용자 코드에 의해 처리되지 않은"거야,하지 않는 한 :

  • CLR 예외에 대한 Visual Studio 설정 "예외가 사용자가 처리되지 않은 경우 중단"을 선택 취소하거나

  • 주석을 자유롭게 적용합니다 ([System.Diagnostics.DebuggerNonUserCodeAttribute()] 주석).

이러한 작업을 완료하면 UnhandledException/ThreadException이 작동하는 것 같습니다.

관련 문제