fun println() { apply(print, __arguments__); print("\n"); __arguments__; } fun ok() { println("OK!"); } fun ko() { println("KO!"); throw "this is ko'd"; println("CANNOT HAPPEN"); } println("----------------A"); try { println(ok()); } println("----------------B"); try { println(ko()); } println("----------------C"); try { println(ko()); } finally { println("CLEANUP 1"); } println("----------------D"); try { println(ko()); } catch (e) { println("CAUGHT ", e); } println("----------------E"); try { println(ko()); } catch (e) { println("CAUGHT ", e); } finally { println("CLEANUP 2"); } println("----------------F"); try { try { println(ko()); } catch (e) { println("CAUGHT ", e); throw "throwing in catch" } finally { println("CLEANUP 3"); } } catch (e) println(e); println("----------------G"); try { try { println(ko()); } catch (e) { println("CAUGHT ", e); } finally { println("CLEANUP 4"); throw "throwing in finally" } } catch (e) println(e); println("----------------H"); try { try { println(ko()); } catch (e) { println("RETHROW ", e); throw e; } finally { println("CLEANUP 5"); } } catch (e) { println("CAUGHT ", e); } println("----------------I"); try { try { try { try { try { try { println(ko()); } catch (e) { println("RETHROW 6 ", e); throw e; } finally { println("CLEANUP 6"); } } catch (e) { println("RETHROW 7 ", e); throw e; } finally { println("CLEANUP 7"); } } catch (e) { println("CAUGHT 8") } finally { println("CLEANUP 8"); } } finally { println("CLEANUP 9"); } } finally { println("CLEANUP 10"); } } catch (e) { println("CAUGHT 11 ", e); } finally { println("CLEANUP 11"); } println("----------------J"); t=millis(); sum= 0; for (a= 0; a < 100000; a++) { sum += a; } println(sum, " loop: ", millis()-t); t=millis(); sum= 0; for (a= 0; a < 100000; a++) { sum += a; continue; } println(sum, " continue: ", millis()-t); println("----------------K"); t=millis(); sum= 0; for (a= 0; a < 100000; a++) { try { try { try { try { try { try { try { try { try { try { sum += a; // throw "oops"; } } } } } } } } } } } println(sum, " tries: ", millis()-t); t=millis(); sum= 0; for (a= 0; a < 100000; a++) { try { try { try { try { try { try { try { try { try { try { sum += a; throw "oops"; } } } } } } } } } } catch (e) {} } println(sum, " throws: ", millis()-t);