업데이트 : 마이크로 소프트 연결에 버그 리포트 제출 한 : 당신이 당신의 컴퓨터에서이 문제를 재현 할 수있는 경우가 고정 될 수 있도록 https://connect.microsoft.com/VisualStudio/feedback/details/568271/debugger-halting-on-exception-thrown-inside-methodinfo-invoke#detailscatch 할 수없는 예외, PT 2
, 버그를 찬성 투표하십시오!
좋아, 나는 몇 가지 테스트를 해봤 내가 아주 간단한 뭔가 문제를 감소했습니다
난. 예외를 throw하는 새 클래스에 메서드를 만듭니다.
public class Class1 {
public void CallMe() {
string blah = null;
blah.ToLower();
}
}
ii. 이 메서드를 다른 위치로 가리키는 MethodInfo를 만듭니다.
Type class1 = typeof(Class1);
Class1 obj = new Class1();
MethodInfo method = class1.GetMethod("CallMe");
iii. try/catch 블록에서 Invoke()에 대한 호출을 마무리하십시오.
try {
method.Invoke(obj, null); // exception is not being caught!
} catch {
}
iv. 디버거없이 프로그램을 실행하십시오 (잘 작동합니다).
v. 이제 디버거를 사용하여 프로그램을 실행하십시오. 디버거는 예외를 발생시키는 catch 처리기에서 래핑되었지만 예외가 발생하면 프로그램을 중지합니다. catch 블록에 중단 점을 넣더라도 도달 할 때까지 중단됩니다!
사실 디버거없이 실행하면 예외가 발생합니다. 간단한 테스트 프로젝트에서는 다른 레벨에서는 무시되지만 앱에 모든 종류의 전역 예외 처리가있는 경우 해당 예외도 트리거됩니다.
[코멘트를보십시오]
이것은 디버깅을 시도하는 고통은 말할 것도없고 내 응용 프로그램의 크래시 핸들러를 계속 실행하기 때문에 두통이 생깁니다.
+1 당신이 제정신 예에이를 줄일 수있는 시간이 걸렸 원인 –
여기를 참조하십시오 : http://stackoverflow.com/questions/2724703/why-does-vs2010-always-break-on-exception-from-methodinfo-invoke –
Visual Studio에서 '스톱 할 때 중지'로 예외를 사용하도록 설정 했습니까? 이 동작은 디버그 | 예외로 이동하고 throw에서 중지를 선택 해제하십시오. –