catch

inline fun <T : Throwable, A> Either.Companion.catch(block: () -> A): Either<T, A>
inline fun <T : Throwable, U : Any> catch(err: (T) -> U, run: () -> U): U
inline fun <T : Throwable> catch(err: (T) -> Unit = { it.printStackTrace() }, run: () -> Unit)
inline fun <T : Throwable, U : Any> catch(default: U, run: () -> U): U