Published: June 20 2023

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 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!

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

On Twitter or RSS.

When I'm not coding...

Me and Tina are on a motorcycle adventure around Australia.
Come along for the ride!


Supported by