X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fjs%2FJSArray.java;fp=src%2Forg%2Fxwt%2Fjs%2FJSArray.java;h=2f5f04d8e7b3aeb3aa774e599e21814f6d9b9aa8;hb=a060cc5025b58e8d3e319aefa6ae44fe7c6182ad;hp=56d37e262f6d656c92db48aa992699974e92ccbb;hpb=c087a8da3dc056d869ae757dabba8cd36b7cc4fb;p=org.ibex.core.git diff --git a/src/org/xwt/js/JSArray.java b/src/org/xwt/js/JSArray.java index 56d37e2..2f5f04d 100644 --- a/src/org/xwt/js/JSArray.java +++ b/src/org/xwt/js/JSArray.java @@ -22,7 +22,7 @@ public class JSArray extends JS { return Integer.parseInt(s); } - public Object callMethod(Object method, Object a0, Object a1, Object a2, Object[] rest, int nargs) { + public Object callMethod(Object method, Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn { //#switch(method) case "pop": return vec.pop(); case "reverse": return reverse(); @@ -80,7 +80,7 @@ public class JSArray extends JS { return super.get(key); } - public void put(Object key, Object val) { + public void put(Object key, Object val) throws JSExn { if (key.equals("length")) vec.setSize(toNumber(val).intValue()); int i = intVal(key); if (i == Integer.MIN_VALUE) super.put(key, val); @@ -151,15 +151,20 @@ public class JSArray extends JS { return JS.toString(a).compareTo(JS.toString(b)); } }; - private Object sort(Object tmp) { + private Object sort(Object tmp) throws JSExn { if(tmp instanceof JS) { final JSArray funcArgs = new JSArray(2); final JS jsFunc = (JS) tmp; vec.sort(new Vec.CompareFunc() { public int compare(Object a, Object b) { - funcArgs.setElementAt(a,0); - funcArgs.setElementAt(b,1); - return JS.toInt(jsFunc.call(a, b, null, null, 2)); + try { + funcArgs.setElementAt(a,0); + funcArgs.setElementAt(b,1); + return JS.toInt(jsFunc.call(a, b, null, null, 2)); + } catch (Exception e) { + // FIXME + throw new JSRuntimeExn(e.toString()); + } } }); } else {