Errores que llevan una causa en JavaScript
Una subclase propia de Error, con el original adjunto.
class ConfigError extends Error {
constructor(message, options) {
super(message, options);
this.name = "ConfigError";
}
}
function parsePort(text) {
try {
const port = Number.parseInt(text, 10);
if (Number.isNaN(port)) throw new TypeError(`not a number: ${text}`);
return port;
} catch (error) {
throw new ConfigError("port is invalid", { cause: error });
}
}
try {
parsePort("http");
} catch (error) {
console.log(error.name, error.message);
console.log("caused by:", error.cause.message);
console.log(error instanceof ConfigError, error instanceof Error);
}
Cómo funciona
causeen las opciones registra qué falló por debajo.- Fijar
namehace la clase legible en un log. - Relanza con contexto en lugar de tragarte el error.
Palabras clave y builtins usados aquí
NumbercatchclassconstconstructorextendsfunctionifisNaNparseIntreturnsuperthisthrowtry
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 561
- Tokens
- 145
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 87 segundos.
Paso 2 de 2 en Errores; paso 39 de 43 en Fundamentos del lenguaje.