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 error
try...finally
:
try {
throw new Error('mi error');
} finally {
console.error('finally');
}
// Output: finally
Cuando 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
// finally
Uso 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-catch
dentro 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 error
Traducido del artículo - JavaScript Try Catch: Exception Handling Explained