static FixedRateTimer doEvery_stopOnException(double initialSeconds default delaySeconds, double delaySeconds, Runnable r) { if (r == null) null; FixedRateTimer timer = new(shorten(programID() + ": " + r, 80)); r = r { try { r.run(); } catch print e { print("Cancelling timer due to error."); timer.cancel(); } }; timer.scheduleAtFixedRate(smartTimerTask(r, timer, toInt(delay)), toInt(firstDelay), toInt(delay)); ret timer; }