Quiero que los errores específicos que se lanzan dentro del bloque de try no sean manejados por catch(err)
Ejemplo:
const someFunc = async () => { ... try { ... // This error should not be handled by the catch and go straight to the middleware throw { status: 404, message: "Not Found", }; } catch (error) { throw { status: 500, message: "Something went wrong", reason: error, }; } };Después de eso, el middleware maneja los errores.
export const errorHandler: ErrorRequestHandler = (err, req, res, next) => { const { status = 500, message, reason } = err; res.status(status).json({ success: false, message: message || "Something went wrong", reason: reason || undefined, }); };Si arroja un error dentro de un bloque try , el catch lo atrapará. Lo mejor que puede hacer es verificar en el bloque catch si se arroja el error que no desea capturar y, de ser así, volver a lanzarlo.
const someFunc = async () => { try { throw { status: 404, message: "Not Found", }; } catch (error) { // If a 404 error is caught, rethrow it. if (error.status === 404) { throw error; } throw { status: 500, message: "Something went wrong", reason: error, }; } };