try-n-catch v2.0.1
try-n-catch
Functional try-catch wrapper. TypeScript typings included.
Provides a different way to handle errors.
Example
import tryCatch from 'try-n-catch'
const string = prompt('Enter a JSON object')
const [value, error] = tryCatch(JSON.parse, string)
if (error) {
// `value` is undefined, `error` is the error thrown by JSON.parse()
alert('This is not a valid JSON object.')
console.log(error)
} else {
// `value` is the parsed object, `error` is undefined
console.log(value)
}
// Note how both `value` and `error` are immutable and visible in the outer scope.More examples
Using an arrow function
Use an arrow function if you prefer to.
tryCatch(JSON.parse, string)
tryCatch(() => JSON.parse(string))Async function error handling
Use tryCatch.async() to handle errors in async functions. tryCatch.sync() is the same as tryCatch().
const [response, error] = await tryCatch.async(fetch, 'https://google.com')If you wish, you can import trySync() and tryAsync(), which act the same as tryCatch() and tryCatch.async() respectively.
import { trySync, tryAsync } from 'try-n-catch'Check if a function threw
If a function may throw undefined, it won't be possible to handle the error using if (err) construct, use if (threw) to instead.
const [value, error, threw] = tryCatch(() => {
throw undefined
})
// both value and error are undefined, but threw is true
if (threw) {
// handle the error
}Named properties
value, error and threw properties are available on the returned array. It could be useful in a scenario where you only need to check if a function throws.
if (tryCatch(someFunction).threw) {
// the function threw
}Precaution
Don't use this in large loops where performance is important.
Don't use this in functions that could be called in large loops where performance is important.