Package com.jcabi.log

Class VerboseRunnable

  • All Implemented Interfaces:
    Runnable

    public final class VerboseRunnable
    extends Object
    implements Runnable
    Wrapper of 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.

    Since:
    0.1.3
    See Also:
    VerboseThreads
    • Constructor Detail

      • VerboseRunnable

        public VerboseRunnable​(Runnable runnable)
        Default constructor, doesn't swallow exceptions.
        Parameters:
        runnable - Runnable to wrap
      • VerboseRunnable

        public VerboseRunnable​(Callable<?> callable)
        Default constructor, doesn't swallow exceptions.
        Parameters:
        callable - Callable to wrap
        Since:
        0.7.17
      • VerboseRunnable

        public VerboseRunnable​(Callable<?> callable,
                               boolean swallow)
        Default constructor, doesn't swallow exceptions.
        Parameters:
        callable - Callable to wrap
        swallow - 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.
        Since:
        0.1.10
      • VerboseRunnable

        public VerboseRunnable​(Callable<?> callable,
                               boolean swallow,
                               boolean vrbs)
        Default constructor.
        Parameters:
        callable - Callable to wrap
        swallow - 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)
        Since:
        0.7.17
      • VerboseRunnable

        public VerboseRunnable​(Runnable runnable,
                               boolean swallow)
        Default constructor, with configurable behavior for exceptions.
        Parameters:
        runnable - Runnable to wrap
        swallow - 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.
        Since:
        0.1.4
      • VerboseRunnable

        public VerboseRunnable​(Runnable runnable,
                               boolean swallow,
                               boolean vrbs)
        Default constructor, with fully configurable behavior.
        Parameters:
        runnable - Runnable to wrap
        swallow - 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)
        Since:
        0.7.17