Skip to content

Instantly share code, notes, and snippets.

@kobzarvs
Created January 15, 2022 00:28
Show Gist options
  • Save kobzarvs/5dab4f3a78e8fd641ed1013976a46f4c to your computer and use it in GitHub Desktop.
Save kobzarvs/5dab4f3a78e8fd641ed1013976a46f4c to your computer and use it in GitHub Desktop.
_try = (cb) => {
let error;
try {
cb();
} catch(e) {
error = e;
}
const result = {
catch: (err, handler) => {
if (!handler) return result;
if (Array.isArray(err)) {
err.some(e => e === error || e === error.constructor) && handler();
}
if (err === error || err === error.constructor) {
handler();
}
return result;
},
finally: (callback) => {
callback && callback(error);
}
}
return result;
}
_try(() => {
console.log('start');
qwe; // ReferenceError
})
.catch(SyntaxError, () => {
console.log(11111)
})
.catch([ReferenceError, TypeError], () => {
console.log(22222)
})
.catch(DOMError, () => {
console.log(33333)
})
.finally((e) => {
console.log('finally');
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment