¿Cómo puede arrojar un error con opciones o un código de estado y luego atraparlos?
A partir de la sintaxis aquí , parece que podemos solucionar el error con información adicional:
new Error(message, options)Entonces, ¿podemos lanzar así a continuación?
throw new Error('New error message', { statusCode: 404 }) Entonces, ¿cómo podemos capturar ese statusCode ?
try { //... } catch (e) { console.log(e.statusCode) // not working off course! }¿Algunas ideas?
Las opciones aún no son compatibles .
Vuelva a lanzar el error funciona:
try { const found = ... // Throw a 404 error if the page is not found. if (found === undefined) { throw new Error('Page not found') } } catch (error) { // Re-throw the error with a status code. error.statusCode = 404 throw error }pero no es una solución elegante.
Puedes usar err.code
const error = new Error("message") error.code = "YOUR_STATUS_CODE" throw error;como se describe aquí , debe crear una excepción personalizada para esto:
function CustomException(message) { const error = new Error(message); error.code = "THIS_IS_A_CUSTOM_ERROR_CODE"; return error; } CustomException.prototype = Object.create(Error.prototype);entonces puedes lanzar tu excepción personalizada:
throw new CustomException('Exception message');basado en la respuesta
const error = new Error(response?.error || 'error message here'); // error message error.code = response?.code || 404; // you can custom insert your error code error.name = "NOT FOUND"; // you can custom insert your error name throw error;