using Jint.Native; using Jint.Runtime; namespace Jint.Tests.PublicInterface; public class JavaScriptExceptionTests { [Fact] public void CanCreateAndThrowJavaScriptException() { var engine = new Engine(); engine.SetValue("throw1", () => { throw new JavaScriptException(engine.Intrinsics.Error, "message 1"); }); engine.SetValue("throw2", () => { throw new JavaScriptException(new JsString("message 2")); }); Assert.Throws(() => { engine.Evaluate(@"throw1()"); }); var result1 = engine.Evaluate(@"try { throw1() } catch (e) { return e; }"); var error1 = Assert.IsType(result1); Assert.Equal("message 1", error1.Get("message").ToString()); var result2 = engine.Evaluate(@"try { throw2() } catch (e) { return e; }"); var jsString = Assert.IsType(result2); Assert.Equal("message 2", jsString.ToString()); } }