다음을 통해 공유


OpCodes.Endfinally 필드

정의

예외 블록의 fault 절이나 finally 절에서 CLI(공용 언어 인프라) 예외 처리기로 다시 제어를 전달합니다.

public: static initonly System::Reflection::Emit::OpCode Endfinally;
public static readonly System.Reflection.Emit.OpCode Endfinally;
 staticval mutable Endfinally : System.Reflection.Emit.OpCode
Public Shared ReadOnly Endfinally As OpCode 

필드 값

설명

다음 표에는 간단한 참조 요약과 함께 명령의 16진수 및 MSIL(Microsoft Intermediate Language) 어셈블리 형식이 나와 있습니다.

서식 어셈블리 형식 Description
DC 끝으로

endfault
예외 블록의 finally 또는 fault 절을 종료합니다.

이 명령에 대한 스택 전환 동작은 없습니다.

Endfinallyendfault 는 예외 처리기가 호출될 때까지 스택 해제가 계속될 수 있도록 또는 fault 절의 끝을 finally 신호로 보냅니다. endfinally 또는 endfault 명령은 컨트롤을 CLI 예외 메커니즘으로 다시 전송합니다. 그런 다음, 보호된 블록이 종료 명령으로 종료된 경우 메커니즘은 체인에서 다음 finally 절을 검색합니다. 보호된 블록이 예외로 종료된 경우 CLI는 다음 finally 또는 fault를 검색하거나 예외 처리의 첫 번째 단계에서 선택한 예외 처리기를 입력합니다.

endfinally 명령은 블록 내에서 finally 어휘로만 나타날 수 있습니다. 명령과 endfilter 달리 블록이 명령으로 endfinally 끝나야 한다는 요구 사항은 없으며 블록 내에 필요한 만큼의 endfinally 명령이 있을 수 있습니다. 이러한 제한 사항은 명령 및 블록에 endfaultfault 적용됩니다.

예외 메커니즘을 제외하고는 컨트롤을 finally (또는 fault) 블록으로 전송할 수 없습니다. 명령을 사용 throw 하거나 (또는 ) 명령을 실행하는 경우를 finally 제외하고는 (또는 faultendfault) 블록에서 컨트롤을 endfinally 전송할 수 없습니다. 특히 (또는 ) 블록에서 finally "제외"하거나 (또는 faultfault) 블록 내에서 finally 또는 Leave 명령을 실행할 Ret 수 없습니다.

endfinally 지침은 endfault 별칭이며 동일한 opcode에 해당합니다.

다음 Emit 메서드 오버로드는 (endfault) opcode와 메서드 EndExceptionBlockILGenerator 사용할 endfinally 수 있습니다.

적용 대상