public static object JScriptExceptionValue(object e, VsaEngine engine) { if (engine == null) { engine = new VsaEngine(true); engine.InitVsaEngine("JS7://Microsoft.JScript.Vsa.VsaEngine", new DefaultVsaSite()); } ErrorConstructor originalError = engine.Globals.globalObject.originalError; if (e is JScriptException) { object obj2 = ((JScriptException)e).value; if ((!(obj2 is Exception) && !(obj2 is Microsoft.JScript.Missing)) && ((((JScriptException)e).Number & 0xffff) == 0x139e)) { return(obj2); } return(originalError.Construct((Exception)e)); } if (e is StackOverflowException) { return(originalError.Construct(new JScriptException(JSError.OutOfStack))); } if (e is OutOfMemoryException) { return(originalError.Construct(new JScriptException(JSError.OutOfMemory))); } return(originalError.Construct(e)); }
public static Object JScriptExceptionValue(Object e, VsaEngine engine) { if (engine == null) { engine = new VsaEngine(true); engine.InitVsaEngine("JS7://Microsoft.JScript.Vsa.VsaEngine", new DefaultVsaSite()); } ErrorConstructor originalError = engine.Globals.globalObject.originalError; if (e is JScriptException) { Object value = ((JScriptException)e).value; if (value is Exception || value is Missing || (((JScriptException)e).Number & 0xFFFF) != (int)JSError.UncaughtException) { return(originalError.Construct((Exception)e)); } return(value); //The exception wraps a non-exception value } else if (e is StackOverflowException) { return(originalError.Construct(new JScriptException(JSError.OutOfStack))); } else if (e is OutOfMemoryException) { return(originalError.Construct(new JScriptException(JSError.OutOfMemory))); } return(originalError.Construct(e)); }