A tiny utility that simplifies try-catch handling in JavaScript/TypeScript. No more repetitive try-catch blocks for every async operation.
Handling errors with async/await often leads to verbose code:
const fetchData = async () => {
let data;
let error;
try {
data = await api.get('/user');
} catch (err) {
error = err;
}
if (error) return handleError(error);
return processData(data);
};npm install using-try-catchimport usingTryCatch from 'using-try-catch';
const fetchData = async () => {
const { data, error } = await usingTryCatch(api.get('/user'));
if (error) return handleError(error);
return processData(data);
};That's it! Returns { data, error } - always.
const { data, error } = await usingTryCatch(fetchUser());
if (error) {
console.log('Failed:', error.message);
return;
}
console.log('User:', data.name);const { data, error } = await usingTryCatch([
fetchUser(),
fetchPosts(),
fetchComments()
]);
if (error) {
console.log('One or more requests failed');
return;
}
const [user, posts, comments] = data;usingTryCatch<T>(promise: Promise<T> | Promise<T>[]): Promise<{
data: T | T[] | null;
error: unknown;
}>- Returns an object with
dataanderrorproperties errorisnullon success, unknown on failure- Works with single promises or arrays of promises
Fully typed out of the box:
import usingTryCatch from 'using-try-catch';
const { data, error } = await usingTryCatch(fetchUser());
// data is typed as User | User[] | null
// error is typed as unknown- Node.js >= 18
Load via CDN:
<script src="https://cdn.jsdelivr.net/npm/using-try-catch/dist/usingTryCatch.js"></script>
<script>
const { data, error } = await usingTryCatch(fetch('/api/data'));
</script>MIT - See LICENSE for details.
See CONTRIBUTING.md for details.
