typestar

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

  1. cause en las opciones registra qué falló por debajo.
  2. Fijar name hace la clase legible en un log.
  3. Relanza con contexto en lugar de tragarte el error.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 2 en Errores; paso 39 de 43 en Fundamentos del lenguaje.

← Anterior Siguiente →