English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Puede ocurrir errores inesperados al ejecutar código JavaScript.
Los errores pueden ser errores de codificación escritos por el programador, errores causados por errores de entrada y otros eventos imprevistos.
Por lo tanto, para manejar errores, JavaScript proporciona4Palabras clave:
La sentencia try le permite probar si un bloque de código contiene errores
La sentencia catch le permite manejar errores
La sentencia throw le permite crear errores personalizados
La sentencia finally le permite ejecutar código después de intentar y capturar, sin importar el resultado
En este ejemplo, hemos escrito "alert" como "aaalert" para generar un error intencional:
try { aaalert("Hello world"); } document.getElementById("result").innerHTML = e.name + "<br>" + e.message; }Prueba vea‹/›
Cuando ocurre un error, JavaScript generalmente detiene su ejecución y crea un objeto con dos propiedadesObjeto Error: nombre y mensaje.
La sentencia try le permite definir un bloque de código que se ejecutará y se realizará una prueba de errores.
Si ocurre un error en el bloque try, la sentencia catch le permite definir un bloque de código que se ejecutará.
Las sentencias try y catch de JavaScript aparecen en pares:
try { //try_statements-Sentencias a probar }catch(err){ //catch_statements-Sentencias para manejar errores }
throw statement lanza una excepción definida por el usuario.
La declaración throw permite crear errores personalizados. Técnicamente, esto se llama "Lanzar una excepción ”。
Las excepciones pueden ser cadenas de JavaScript, números, valores booleanos o objetos:
throw "Invalid"; // Generar una excepción con valor de cadena throw 32; // Generar un valor32La excepción throw true; // Generar una excepción con valor true
Si se utiliza throw junto con try y catch, se puede especificar el flujo del programa y generar mensajes de error personalizados.
En este ejemplo, si se pasan parámetros no numéricos a getRectArea(), se lanzará un error personalizado:
function getRectArea(width, height) { if (isNaN(width) || isNaN(height)) { throw "Parameter is not a number!"; } } try { getRectArea(5, 'Z'); } catch(err) { document.getElementById('para').innerHTML = err; }Prueba vea‹/›
En este ejemplo, si el valor es incorrecto, se lanza una excepción (err). La declaración catch captura la excepción (err) y muestra un mensaje de error personalizado:
var x = document.querySelector("input").value; try { if(x == "") throw "is Empty"; if(isNaN(x)) throw "Not a Number"; if(x > 10);throw "too High"; if(x < 5);throw "too Low"; } catch(err) { document.getElementById("para").innerHTML = "Input " + err; }Prueba vea‹/›
La declaración finally le permite ejecutar código después de try y catch, independientemente del resultado.
try { aaalert("Hello world"); } catch(err) { document.getElementById("result").innerHTML = err; } finally { document.getElementById("result").innerHTML += "<h3>Finally statement executed</h3>"; }Prueba vea‹/›
As instruções catch e finally são opcionais, mas você precisa usar uma delas (ou ambas), enquanto usa a instrução try:
try { aaalert("Hello world"); } finally { document.getElementById("result").innerHTML = "Finally statement executed"; }Prueba vea‹/›
O JavaScript possui um objeto Error integrado, que fornece informações de erro quando ocorre um erro.
O objeto Error fornece duas propriedades úteis: name e message.
A tabela a seguir lista as propriedades do objeto Error:
Propriedade | Descrição |
---|---|
nome | Definir ou retornar o nome do erro |
mensagem | Definir ou retornar a mensagem de erro |
A propriedade error name pode retornar sete valores diferentes:
Tipo | Descrição |
---|---|
EvalError | Representa o erro relacionado à função global eval() |
InternalError | Representa o erro ocorrido ao causar um erro interno no motor JavaScript |
RangeError | Representa o erro ocorrido quando a variável ou parâmetro numérico está fora de seu intervalo válido |
ReferenceError | Representa o erro ocorrido ao cancelar a referência de uma referência inválida |
SyntaxError | Representa o erro ocorrido ao analisar código dentro do eval() |
TypeError | Representa o erro ocorrido quando uma variável ou parâmetro não é do tipo válido |
URIError | Representa o erro ocorrido ao passar parâmetros inválidos para encodeURI() ou decodeURI() |
A próxima seção apresentará detalhes sobre cada um desses tipos de erro.
Quando atravéseval()Quando ocorre um erro durante a execução da função, é lançado um EvalError.
No entanto, o JavaScript não lança mais este erro, mas mantém este objeto para compatibilidade com versões anteriores.
Versões mais recentes do JavaScript não lançam exceções EvalError. Use SyntaxError em vez disso.
Quando usar números que excedem o intervalo permitido, será gerado um RangeError.
Por exemplo, criar um array com comprimento negativo lançará um RangeError:
try { var arr = new Array(-1); // lança um erro de intervalo } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prueba vea‹/›
Quando você tenta referenciar ou acessar uma variável ou objeto inexistente, geralmente é lançado um ReferenceError.
try { var x == 5 + y; // Lanzar error de referencia } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prueba vea‹/›
Si su código JavaScript tiene algún problema de sintaxis, se desencadenará un SyntaxError en tiempo de ejecución.
try { eval("alert('Hello)"); // Falta ' lanzará un error } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prueba vea‹/›
Al no ser el tipo de valor esperado, se lanzará un TypeError.
var num = 50; try { num.toUpperCase(); // No puede convertir un número a mayúsculas } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prueba vea‹/›
Al especificar un URI (Identificador de Recursos Uniformes) no válido, se desencadenará un URIError.
try { decodeURI("%"); // No puede decodificar por URI el signo porcentaje } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prueba vea‹/›
Para obtener una referencia completa de propiedades y métodos, visite nuestraReferencia de error de JavaScript.
La parte de referencia contiene descripciones y ejemplos de todas las propiedades y tipos de Error.