Vanilla JS - Wrap Object Methods in Try/Catch to Handle Errors in JavaScript
I created the below function recently to encapsulate error handling logic for multiple JS object methods in a single place.
The function wraps all top-level methods of the provided object (myObject
) in a try/catch
block to handle all errors the same way. You could use the same approach to wrap javascript methods with any cross-cutting functionality (e.g. logging).
Object.entries()
converts the provided object into an array of key/value pairs so the Array.map()
method can be called.
Object.fromEntries()
converts the provided array of key/value pairs back into an object.
function wrapObjectMethods(myObject) {
return Object.fromEntries(
Object.entries(myObject).map(([key, value]) => {
const isMethod = typeof value === 'function';
if (isMethod) {
return [key, wrapMethod(value)];
} else {
return [key, value];
}
})
);
function wrapMethod(method) {
return async (...args) => {
try {
return await method(...args);
} catch (err) {
// ERROR!
console.error(err);
}
};
}
}
To add error handling to an existing object I call the function like this:
const objectWithErrorHandling = wrapObjectMethods(anObject);
Need Some Vanilla JS Help?
Search fiverr for freelance Vanilla JS developers.
Follow me for updates
When I'm not coding...
Me and Tina are on a motorcycle adventure around Australia.
Come along for the ride!