diff --git a/ILRuntime/Runtime/Intepreter/ILIntepreter.cs b/ILRuntime/Runtime/Intepreter/ILIntepreter.cs index 03e410a6..298effc5 100644 --- a/ILRuntime/Runtime/Intepreter/ILIntepreter.cs +++ b/ILRuntime/Runtime/Intepreter/ILIntepreter.cs @@ -4641,7 +4641,8 @@ public object Run(ILMethod method, object instance, object[] p) case OpCodeEnum.Throw: { objRef = GetObjectAndResolveReference(esp - 1); - var ex = mStack[objRef->Value] as Exception; + var exObj = mStack[objRef->Value]; + var ex = exObj as Exception ?? (exObj as ILTypeInstance)?.CLRInstance as Exception; Free(objRef); esp--; throw ex;