2009-08-27 7 views
1

을 사용하여 C#에 해당하는 "EXCEPTION_CONTINUE_EXECUTION"필터 함수를 사용하여 예외 처리를 수행하고 C++과 같이 예외가 발생한 지점에서 실행을 계속할 수 있습니까? VB의에 오류 고토 X 같은 소리예외 필터

감사합니다,

답변

2

는/다음 패턴을 다시 시작합니다. 그렇다면 아니오.

VB.NET에서 허용되지만 주로 이전 버전과의 호환성을 위해 제공됩니다. . NET은 그처럼 심한 해킹이며 실제로 아무도 사용하지 못했다.

2

불가능합니다.

.NET에는 예외 필터링 메커니즘이 있지만 C# 언어는 노출되지 않습니다. 또한 예외가 발생한 지점에서 실행을 재개 할 수 있다고 생각하지 않습니다. 예외의 유형 이상을 기반으로 예외를 catch할지 여부를 결정할 때 더 유용합니다.

3

CLR은 filter/endfilter IL 절을 통해 2 통과 예외 발송의 예외 필터를 지원하지만 직접 구현하는 하위 수준 명령어는 C# 컴파일러에서 지원되지 않습니다.

또한 지원되는 절의 반환 값은 0과 1이며 각각 exception_continue_searchexception_execute_handler입니다. 따라서 예외 시점에서 실행을 다시 시작할 수는 없습니다.

+0

"필터 처리기를 사용하는 경우를 제외하고는 예외 위치에서 실행을 재개 할 수 없습니다." 12.4.2.5 예외 처리 개요. – tgiphil

+0

@tgiphil하지만,'filter' /'endfilter'에 대한 유일한 * 반환 값은 검색과 실행 핸들러입니다. 이제 -1 (또는 0xffffffff)을 반환하면 SEH와 동일하게 작동합니다. http://msdn.microsoft.com/en-us/library/windows/desktop/ms680634%28v=vs.85%29.aspx를 참조하십시오. –