public final class VerboseRunnable extends Object implements Runnable
Runnable
, that logs all uncaught runtime exceptions.
You can use it with scheduled executor, for example:
Executors.newScheduledThreadPool(2).scheduleAtFixedRate( new VerboseRunnable(runnable, true), 1L, 1L, TimeUnit.SECONDS );
Now, every runtime exception that is not caught inside your
Runnable
will be reported to log (using Logger
).
Two-arguments constructor can be used when you need to instruct the class
about what to do with the exception: either swallow it or escalate.
Sometimes it's very important to swallow exceptions. Otherwise an entire
thread may get stuck (like in the example above).
This class is thread-safe.
VerboseThreads
Constructor and Description |
---|
VerboseRunnable(Callable<?> callable,
boolean swlw)
Default constructor.
|
VerboseRunnable(Runnable runnable)
Default constructor, doesn't swallow exceptions.
|
VerboseRunnable(Runnable runnable,
boolean swlw)
Default constructor, with configurable behavior for exceptions.
|
public VerboseRunnable(Runnable runnable)
runnable
- Runnable to wrappublic VerboseRunnable(Runnable runnable, boolean swlw)
public VerboseRunnable(Callable<?> callable, boolean swlw)
public void run()
We catch RuntimeException
and Error
here. All other
types of exceptions are "checked exceptions" and won't be thrown out
of Runnable.run()
method.
Copyright © 2012 jcabi.com. All Rights Reserved.