Есть простое приложение на express построенное по принципам mvc, вот кусок кода из роутера
const router = require('express').Router();
const Auth = require('./controllers/AuthController');
router.post('/register', Auth.register);
router.post('/login', Auth.login);
router.post('/current-user', Auth.getCurrentUser);
router.post('/forgot-password', Auth.forgotPassword);
router.post('/reset-password', Auth.resetPassword);
module.exports = router;
Соответственно контроллер - это модуль, возвращающий объект с методами. В каждом методе есть обращение к моделям (пока от 1 до 3-х запросов), все построено на async/await
Вот к примеру один из методов
register: async (req, res) => {
validator.checkEmail(req.body.email);
if (!validator.errorLength)
await validator.checkEmailNotExist(req.body.email);
validator.checkPassword(req.body.password, req.body.password_confirm || '');
if (validator.errorLength)
return res.sendInputsErrors(validator.getAndCleanErrors());
try {
let user = await User.create({
email: req.body.email,
password: crypt.hash(req.body.password)
});
auth.sendSuccessAuthenticatedResponse(user, req, res);
} catch (e) {
res.sendServerError(e)
}
return true;
}
Так вот, хотелось бы избавиться от этих вездесущих try...catch, я так понимаю, что теоретически этой конструкцией надо обернуть место вызова обработчика роута