What error are you seeing? Do you see the error at runtime or in your IDE? Your code works for me (Groovy 2.4.9) so maybe check for unbalanced braces elsewhere in your code.
However, you shouldn't catch/rethrow the InterruptedException as you do. The InterruptedException is not thrown for "some reason", it is thrown when another thread calls Thread.interrupt() on your thread (e.g. to wake your thread up so it can check its state). For example: Thread t = Thread.start { boolean running = true while (running) { doSomeWork() try { Thread.sleep(1000) } catch (InterruptedException e) { running = shouldIKeepRunning() return true } } } // At program shutdown/cleanup t.interrupt() t.join() println "Our thread has termintated." The Closure passed to the Thread.sleep method can be used in place of the try/catch block. That is the closure will be called when Thread.interrupt() is called on your thread i.e.: Thread t = Thread.start { boolean running = false while(running) { doSomeWork() Thread.sleep(1000) { // Called then Thread.sleep() is interrupted. running = false return true } } } // ... t.interrupt() t.join() Finally, if you are doing complicated threading work you should really be using GPars or Java's Executors, ThreadPools, et al. Cheers, Keith > On Jan 5, 2018, at 11:01 AM, Mohan Radhakrishnan > <radhakrishnan.mo...@gmail.com> wrote: > > > > > Hi, > I am new to groovy. Here I tried to create > a simple wrapper around 'sleep'. > I see the error in the subject at 'def'. What's wrong ? > Thanks, > Mohan > > /** > * Our custom sleep logic. > */ > trait ThreadSleeper { > long ms > Closure cl = {} > > /*Sleep with an action taken*/ > def sleeperWithAction() { > try{ > > Thread.sleep ms, cl > > }catch( InterruptedException ie ){ > throw new SleepInterruptedException( ie, "Thread.sleep is > interrupted for "+ > "some reason [" + > ie.getMessage() +"]"); > } > } > > > /*If there is no action to be taken then we call this*/ > def sleeper() { > try{ > > Thread.sleep ms > > }catch( InterruptedException ie ){ > throw new SleepInterruptedException( ie, "Thread.sleep is > interrupted for "+ > "some reason [" + > ie.getMessage() +"]"); > } > } > } ---------------------- Keith Suderman Research Associate Department of Computer Science Vassar College, Poughkeepsie NY suder...@cs.vassar.edu