We're running with LiveConnect aggressively turned off... On Jan 22, 5:32 am, Norris Boyd <[email protected]> wrote: > On Jan 21, 9:41 pm, "[email protected]" <[email protected]> > wrote: > > > > > We recently discovered some interesting issues with throw for certain > > classes of objects: > > > // These are OK: > > > //throw; // OK - Unhandled exception > > //throw {}; // OK - JS exception > > //throw function() {}; // OK > > //throw throw; // OK - syntax error > > //throw +; // OK > > //throw Error("bye"); // OK > > //throw new Error("bye"); // OK > > > // Failures: > > //throw acre.missing_obj; // 500 - org.mozilla.javascript.Undefined > > cannot be cast to org.mozilla.javascript.Scriptable > > //throw 1.0; // 500 - java.lang.Double cannot be cast to > > org.mozilla.javascript.Scriptable > > //throw undefined; // 500 - org.mozilla.javascript.Undefined cannot be > > cast to org.mozilla.javascript.Scriptable > > //throw 1; // 500 - java.lang.Double cannot be cast to > > org.mozilla.javascript.Scriptable > > //throw "an error message"; // 500 - java.lang.String cannot be cast > > to org.mozilla.javascript.Scriptable > > //throw null; // 500 - java.lang.NullPointerException > > > Looking at the ECMA standard, a throw statement should call the > > GetValue algorithm on the object (which will return the primitive for > > a primitive), and then throw that value. SpiderMonkey also handles > > these cases correctly: > > > [18:39] a...@temperantia: ~> js > > js> throw Object.blah > > uncaught exception: undefined > > js> throw 1.0 > > uncaught exception: 1 > > js> throw undefined > > uncaught exception: undefined > > js> throw 1 > > uncaught exception: 1 > > js> throw "an error message" > > uncaught exception: an error message > > js> throw null > > uncaught exception: null > > Trying the examples above in the Rhino shell I get the following: > > js> throw Object.blah > js: "<stdin>", line 2: exception from uncaught JavaScript throw: > undefined > at <stdin>:2 > > js> throw 1.0 > js: "<stdin>", line 3: exception from uncaught JavaScript throw: 1 > at <stdin>:3 > > js> throw undefined > js: "<stdin>", line 4: exception from uncaught JavaScript throw: > undefined > at <stdin>:4 > > js> throw 1 > js: "<stdin>", line 5: exception from uncaught JavaScript throw: 1 > at <stdin>:5 > > js> throw "an error message" > js: "<stdin>", line 6: exception from uncaught JavaScript throw: an > error messag > e > at <stdin>:6 > > js> throw null > js: "<stdin>", line 7: exception from uncaught JavaScript throw: null > at <stdin>:7 > > This looks to be the same behavior as SpiderMonkey, and doesn't match > the failures you're seeing. Do you have some changes to your Rhino > environment that could be causing the different behavior? > > --Norris
_______________________________________________ dev-tech-js-engine-rhino mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
