JavaScript prueba… captura… finalmente
los try
, catch
y finally
los bloques se utilizan para manejar excepciones (un tipo de error). Antes de aprender sobre ellos, debe conocer los tipos de errores en la programación.
Tipos de errores
En programación, puede haber dos tipos de errores en el código:
Error de sintaxis: Error en la sintaxis. Por ejemplo, si escribes consol.log('your result');
, el programa anterior arroja un error de sintaxis. la ortografía de console
es un error en el código anterior.
Error de tiempo de ejecución: Este tipo de error ocurre durante la ejecución del programa. Por ejemplo,
llamar a una función no válida o una variable.
Estos errores que ocurren durante el tiempo de ejecución se llaman excepciones. Ahora, veamos cómo puede manejar estas excepciones.
Declaración de JavaScript try… catch
los try...catch
La declaración se utiliza para manejar las excepciones. Su sintaxis es:
try {
// body of try
}
catch(error) {
// body of catch
}
El código principal está dentro del try
bloquear. Mientras se ejecuta el try
bloque, si ocurre algún error, va al catch
bloquear. los catch
block maneja los errores según las instrucciones catch.
Si no ocurre ningún error, el código dentro del try
se ejecuta el bloque y el catch
se salta el bloque.
Ejemplo 1: Mostrar variable no declarada
// program to show try...catch in a program
const numerator= 100, denominator="a";
try {
console.log(numerator/denominator);
// forgot to define variable a
console.log(a);
}
catch(error) {
console.log('An error caught');
console.log('Error message: ' + error);
}
Producción
NaN An error caught Error message: ReferenceError: a is not defined
En el programa anterior, a La variable no está definida. Cuando intenta imprimir el a variable, el programa arroja un error. Ese error está atrapado en el catch
bloquear.
JavaScript intente… atrape… finalmente Declaración
También puede utilizar el try...catch...finally
declaración para manejar excepciones. los finally
El bloque se ejecuta tanto cuando el código se ejecuta correctamente como si se produce un error.
la sintaxis de try...catch...finally
bloque es:
try {
// try_statements
}
catch(error) {
// catch_statements
}
finally() {
// codes that gets executed anyway
}
Ejemplo 2: intentar… atrapar… finalmente Ejemplo
const numerator= 100, denominator="a";
try {
console.log(numerator/denominator);
console.log(a);
}
catch(error) {
console.log('An error caught');
console.log('Error message: ' + error);
}
finally {
console.log('Finally will execute every time');
}
Producción
NaN An error caught Error message: ReferenceError: a is not defined Finally will execute every time
En el programa anterior, se produce un error y ese error es capturado por el catch
bloquear. los finally
El bloque se ejecutará en cualquier situación (si el programa se ejecuta correctamente o si se produce un error).
Nota: Tienes que usar catch
o finally
declaración después try
declaración. De lo contrario, el programa arrojará un error. SyntaxError no detectado: captura faltante o finalmente después de intentarlo.
Prueba de JavaScript… captura en setTimeout
los try...catch
no detectará la excepción si sucedió en «cronometrado» código, como en setTimeout(). Por ejemplo,
try {
setTimeout(function() {
// error in the code
}, 3000);
} catch (e) {
console.log( "won't work" );
}
Lo anterior try...catch
no funcionará porque el motor ya ha salido del try..catch
construir y la función se ejecuta más tarde.
los try..catch
el bloque debe estar dentro de esa función para detectar una excepción dentro de una función cronometrada. Por ejemplo,
setTimeout(function() {
try {
// error in the code
} catch {
console.log( "error is caught" );
}
}, 3000);
También puede utilizar el throw
declaración con el try...catch
instrucción para usar excepciones definidas por el usuario. Por ejemplo, cierto número se divide por 0. Si quieres considerar Infinity
como un error en el programa, entonces puede lanzar una excepción definida por el usuario usando el throw
declaración para manejar esa condición.
Aprenderá sobre la instrucción throw de JavaScript en el siguiente tutorial.