AnyCompiler

Manejo de Excepciones (try/catch)

try/catch funciona igual que en JavaScript — el código que podría fallar va dentro de try, y catch se ejecuta en vez de que el programa se caiga si algo lanza un error.

try {
  const result = JSON.parse("not valid json");
} catch (error) {
  console.log("Could not parse JSON!");
}
Output
Could not parse JSON!

Por qué el error capturado es unknown

JavaScript te permite lanzar literalmente cualquier cosa — un string, un number, un objeto Error real. Como TypeScript no puede saber de antemano qué producirá un throw determinado, tipa el valor capturado como unknown en vez de any, lo que te obliga a comprobar su tipo antes de usarlo.

try {
  JSON.parse("not valid json");
} catch (error) {
  if (error instanceof Error) {
    console.log(`Error: ${error.message}`);
  }
}
Output
Error: Unexpected token o in JSON at position 1

error instanceof Error reduce el tipo de unknown a Error, que es lo que realmente hace que error.message sea accesible — acceder a .message directamente en un valor unknown sería un error de compilación.

Siguiente: type narrowing — el patrón general detrás de esa comprobación instanceof, y las otras formas en que TypeScript reduce los tipos.