Я не совсем знаю правильный подход в kotlin, но вы можете использовать следующую идею из scala: Try
-
try Success(r) catch {
case NonFatal(e) => Failure(e)
}
Если исключение не является фатальным:
case _: VirtualMachineError | _: ThreadDeath | _: InterruptedException | _: LinkageError | _: ControlThrowable => false
case _ => true
тогда просто верните Failure(e)
в противном случае бросьте его.Как вы можете использовать это?По крайней мере, у вас не получится так:
try {
...
} catch {
case _ : Throwable => ... // catch all exceptions
}
Да, вы все еще не знаете, какой код исключения может выдать, но с помощью этого подхода вы можете контролировать общий поток выполнения.
Но, конечно, будет намного лучше, если в списке документов будут исключения, которые могут быть выброшены.