La sentencia try..catch..finally especifica un bloque de código para probar junto con una respuesta en caso de que ocurra un error. La sentencia try puede contener uno o más bloques try y termina con al menos una cláusula catch o finally.
try...catch:
try {
throw new Error('mi error');
} catch (err) {
console.error(err.message);
}
// Output: mi errortry...finally:
try {
throw new Error('mi error');
} finally {
console.error('finally');
}
// Output: finallyCuando no se utiliza una declaración catch, el error no se "detecta", aun cuando se ejecute el bloque finally en el código. En cambio, el error continuará en el bloque superior try (o bloque principal).
try...catch...finally:
try {
throw new Error('mi error');
} catch (err) {
console.error(err.message);
} finally {
console.error('finally');
}
// Output:
// mi error
// finallyUso típico:
try {
abrirArchivo(archivo);
leerArchivo(archivo)
} catch (err) {
console.error(err.message);
} finally {
cerrarArchivo(archivo);
}try...catch anidado:
También puedes:
- Anidar una declaración
try-catchdentro de un bloquetry.
Puedes anidar una declaración try..catch dentro de un bloque try. Por ejemplo, para lanzar un error hacia arriba:
try {
try {
throw new Error('mi error');
} catch (err) {
console.error('interno', err.message);
throw err;
} finally {
console.log('finally interno');
}
} catch (err) {
console.error('externo', err.message);
}
// Output:
// interno mi error
// finally interno
// externo mi errorTraducido del artículo - JavaScript Try Catch: Exception Handling Explained