In Java it was considered a bad practice to catch and handle Throwables, because they include unrecoverable Errors. However, runCatching and mapCatching from Kotlin standard library do catch them and wrap them in a Result like any other exception. Is it generally OK to catch Throwables in Kotlin or is Result a special case (and if so, why)?