public virtual void EndExceptionBlock()
{
if (this.m_currExcStackCount == 0)
{
throw new NotSupportedException(Environment.GetResourceString("Argument_NotInExceptionBlock"));
}
__ExceptionInfo info = this.m_currExcStack[this.m_currExcStackCount - 1];
this.m_currExcStack[this.m_currExcStackCount - 1] = null;
this.m_currExcStackCount--;
Label endLabel = info.GetEndLabel();
switch (info.GetCurrentState())
{
case 1:
case 0:
throw new InvalidOperationException(Environment.GetResourceString("Argument_BadExceptionCodeGen"));
case 2:
this.Emit(OpCodes.Leave, endLabel);
break;
case 3:
case 4:
this.Emit(OpCodes.Endfinally);
break;
}
if (this.m_labelList[endLabel.GetLabelValue()] == -1)
{
this.MarkLabel(endLabel);
}
else
{
this.MarkLabel(info.GetFinallyEndLabel());
}
info.Done(this.m_length);
}