Acho que entendi, você parece estar usando um padrão chamado "action"
https://dev.to/urielsouza29/padrao-por-acao-action-pattern-limpo-obvio-e-testavel-3j7d
Esse padrão do texto é parecido com o seu, mas melhor organizado.
Se você gosta do seu modo complementar com o action vai te ajuda muito mais!
const validateOptions = (options) => {
try {
if (!options) throw new Error('options object is required.');
if (!options.someOption) throw new Error('options.someOption is required.');
} catch (exception) {
throw new Error(`[validateOptions] ${exception.message}`);
}
};
Eu sugeriria mais uma complementação ao action.
usar
Usar o error cause
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
const validateOptions = (options) => {
try {
if (!options) throw new Error('options object is required.');
if (!options.someOption) throw new Error('options.someOption is required.');
} catch (exception) {
throw new Error('[validateOptions]', { cause: { code: COD002 , message:exception.message }, });
}
};
Você não precisa sempre de try catch
para mandar um erro. Pode ser só if mesmo!
Você também pode centralizar os erros num lugar só!
https://www.toptal.com/nodejs/node-js-error-handling
Mais um pouco sobre como lidar com erros!
https://kinsta.com/blog/errors-in-javascript/
Espero que isso ajude!