Package org.eclipse.core.runtime

## Interface ISafeRunnable

All Known Implementing Classes:
  `SafeRunnable`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    public interface ISafeRunnable

Safe runnables represent blocks of code and associated exception handlers. They are typically used when a plug-in needs to call some untrusted code (e.g., code contributed by another plug-in via an extension).

This interface can be used without OSGi running.

Clients may implement this interface.

See Also:
  `SafeRunner.run(ISafeRunnable)`

### Method Summary

All Methods Instance Methods Abstract Methods Default Methods
`default void` `handleException​(Throwable exception)` Handles an exception thrown by this runnable's `run()` method.
`void` `run()` Runs this runnable.

### Method Detail

#### run

    void run()
      throws Exception

Runs this runnable. Any exceptions thrown from this method will be logged by the caller and passed to this runnable's `handleException(java.lang.Throwable)` method.

Throws:
  `Exception` - if a problem occurred while running this method
See Also:
  `SafeRunner.run(ISafeRunnable)`

#### handleException

    default void handleException​(Throwable exception)

Handles an exception thrown by this runnable's `run()` method. The processing done here should be specific to the particular use case for this runnable. Generalized exception processing, including logging in the Platform's log, is done by the `SafeRunner`.

All exceptions from the `run()` method are passed to this method, along with certain `Error` types that are typically caused by programming errors in the untrusted code being run.

Parameters:
  `exception` - an exception which occurred during processing the body of this runnable (i.e., in `run()`)
See Also:
  `SafeRunner.run(ISafeRunnable)`