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)
Default constructor, doesn't swallow exceptions.
|
VerboseRunnable(Callable<?> callable,
boolean swallow)
Default constructor, doesn't swallow exceptions.
|
VerboseRunnable(Callable<?> callable,
boolean swallow,
boolean vrbs)
Default constructor.
|
VerboseRunnable(Runnable runnable)
Default constructor, doesn't swallow exceptions.
|
VerboseRunnable(Runnable runnable,
boolean swallow)
Default constructor, with configurable behavior for exceptions.
|
VerboseRunnable(Runnable runnable,
boolean swallow,
boolean vrbs)
Default constructor, with fully configurable behavior.
|
public VerboseRunnable(Runnable runnable)
runnable
- Runnable to wrappublic VerboseRunnable(Callable<?> callable)
callable
- Callable to wrappublic VerboseRunnable(Callable<?> callable, boolean swallow)
public VerboseRunnable(Callable<?> callable, boolean swallow, boolean vrbs)
callable
- Callable to wrapswallow
- Shall we swallow exceptions
(TRUE
) or re-throw
(FALSE
)? Exception swallowing means that run()
will never throw any exceptions (in any case all exceptions are logged
using Logger
.vrbs
- Shall we report the entire
stacktrace of the exception
(TRUE
) or just its message in one line (FALSE
)public VerboseRunnable(Runnable runnable, boolean swallow)
public VerboseRunnable(Runnable runnable, boolean swallow, boolean vrbs)
runnable
- Runnable to wrapswallow
- Shall we swallow exceptions
(TRUE
) or re-throw
(FALSE
)? Exception swallowing means that run()
will never throw any exceptions (in any case all exceptions are logged
using Logger
.vrbs
- Shall we report the entire
stacktrace of the exception
(TRUE
) or just its message in one line (FALSE
)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–2016 jcabi.com. All rights reserved.