mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-22 16:23:50 +00:00
safelyWithoutException updates
This commit is contained in:
parent
51719b5868
commit
502a49644c
@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
## 0.4.16
|
## 0.4.16
|
||||||
|
|
||||||
|
* `Coroutines`:
|
||||||
|
* `safely`:
|
||||||
|
* New `safelyWithoutExceptions` function may accept `onException` parameter with nullable result
|
||||||
|
* Old `safelyWithoutExceptions` now using `defaultSafelyWithoutExceptionHandler` to handle exceptions "like in
|
||||||
|
`safely`", but it is expected that `defaultSafelyWithoutExceptionHandler` will not throw any exception
|
||||||
|
|
||||||
## 0.4.15
|
## 0.4.15
|
||||||
|
|
||||||
* `Coroutines`:
|
* `Coroutines`:
|
||||||
|
@ -11,6 +11,17 @@ typealias ExceptionHandler<T> = suspend (Throwable) -> T
|
|||||||
*/
|
*/
|
||||||
var defaultSafelyExceptionHandler: ExceptionHandler<Nothing> = { throw it }
|
var defaultSafelyExceptionHandler: ExceptionHandler<Nothing> = { throw it }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This instance will be used in all calls of [safelyWithoutExceptions] as an exception handler for [safely] call
|
||||||
|
*/
|
||||||
|
var defaultSafelyWithoutExceptionHandler: ExceptionHandler<Unit> = {
|
||||||
|
try {
|
||||||
|
defaultSafelyExceptionHandler(it)
|
||||||
|
} catch (e: Throwable) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Key for [SafelyExceptionHandler] which can be used in [CoroutineContext.get] to get current default
|
* Key for [SafelyExceptionHandler] which can be used in [CoroutineContext.get] to get current default
|
||||||
* [SafelyExceptionHandler]
|
* [SafelyExceptionHandler]
|
||||||
@ -123,8 +134,23 @@ suspend inline fun <T> safely(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shortcut for [safely] without exception handler (instead of this you will receive null as a result)
|
* Shortcut for [safely] with exception handler, that as expected must return null in case of impossible creating of
|
||||||
|
* result from exception (instead of throwing it)
|
||||||
|
*/
|
||||||
|
suspend inline fun <T> safelyWithoutExceptions(
|
||||||
|
noinline onException: ExceptionHandler<T?>,
|
||||||
|
noinline block: suspend CoroutineScope.() -> T
|
||||||
|
): T? = safely(onException, block)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shortcut for [safely] without exception handler (instead of this you will always receive null as a result)
|
||||||
*/
|
*/
|
||||||
suspend inline fun <T> safelyWithoutExceptions(
|
suspend inline fun <T> safelyWithoutExceptions(
|
||||||
noinline block: suspend CoroutineScope.() -> T
|
noinline block: suspend CoroutineScope.() -> T
|
||||||
): T? = safely({ null }, block)
|
): T? = safelyWithoutExceptions(
|
||||||
|
{
|
||||||
|
defaultSafelyWithoutExceptionHandler.invoke(it)
|
||||||
|
null
|
||||||
|
},
|
||||||
|
block
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user