Паттерн, при котором исполняемый код оборачивается в try...catch на самом верхнем уровне и определяется несколько наследников от базового класса ошибки, логика обработки которых прописывается один раз в корневом catch:
class FormError extends Error {};
class AuthError extends Error {};
function auth() {
// do something
throw AuthError;
}
function validator() {
// do something
throw FormError;
}
try {
auth();
validator();
} catch(err) {
if (err instanceof FormError) {}
if (err instanceof AuthError) {}
// unhandle err
}