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); }