:ok_hand: Resilient error handling pattern for JavaScript
What if JavaScript could chill a little bit with all the errors being thrown here and there?
function parse(raw) {
try {
return [ null, JSON.parse(raw) ]
} catch (err) {
return [ err, null ]
}
}
let [ err, ok ] = parse(...)
Nullable | try..catch and throw | Callback | Promise | chilled | |
---|---|---|---|---|---|
Sync | ![]() |
![]() |
![]() |
||
Async | ![]() |
![]() |
![]() |
||
Error Context | ![]() |
![]() |
![]() |
![]() |
|
Composability | ![]() |
![]() |
![]() |
Helps to capture the error close to the context when working with functions which throw exceptions.
const parse = chill(JSON.parse)
let [ err, ok ] = parse('{ "id": 1 }')
if (err) {
// Handle the error.
}
console.log(ok)
Removes exception bubbling when using Async Await.
const url = 'https://jsonplaceholder.typicode.com/todos/1'
async function () {
let [ err, ok ] = await chill(
() => fetch(url).then(response => response.json())
)()
if (err) {
// Handle the error.
}
// Celebrate the success at async programming!
console.log(ok)
}()