
La expresión throw en javascript arroja una excepción definida por el usuario, esto hará que la función actual se detenga (es decir, las expresiones throw
ya no se ejecutarán) y la ejecución pasará a la primera catch
, y si no está, el programa terminará.
Características generales
La expresión throw se usa para lanzar una excepción en javascript, y cuando lanza una excepción, un valor expression
especifica cuál es el valor de la excepción. Ejemplos:
throw 'Error2'; // genera una excepción con un valor de throw 42; // throw true; // Genera una excepción con un valor booleano
Tenga en cuenta que la expresión throw
se ve afectada por la adición automática de punto y coma, por lo que no se puede colocar una línea en blanco entre la palabra reservada y la expresión throw
.
Estructura throw javascript
throw expression;
expression
La expresión a lanzar.
Ejemplos y aplicaciones en código
Lanzar un objeto
Puede lanzar un objeto como una excepción, y luego puede referirse a las propiedades de ese objeto en una sección catch
. Observe cómo creamos el objeto UserException
en el siguiente ejemplo y luego lo lanzamos a través de la expresión throw
:
function UserException(message) { this.message = message; this.name = 'UserException'; } function getMonthName(mo) { mo = mo - 1; // (1 = Jan, 12 = Dec) var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; if (months[mo] !== undefined) { return months[mo]; } else { throw new UserException('InvalidMonthNo'); } } try { var myMonth = 15; // número fuera del rango var monthName = getMonthName(myMonth); } catch (e) { monthName = 'unknown'; console.log(e.message, e.name); // pasar el objeto a err }
Devolver un objeto
Este ejemplo prueba una cadena si coincide con el código postal de España. Y si la sintaxis no es válida, lanzará una excepción al crear un objeto de tipo ZipCodeFormatException
:
/* * Crea un objeto ZipCode. * Sintaxis permitida para el código postal: * 12345 * 12345-6789 * 123456789 * 12345 6789 * Si la cadena pasada a la función * no coincide con uno de los patrones anteriores, se lanza una excepción */ function ZipCode(zip) { zip = new String(zip); pattern = /[0-9]{5}([- ]?[0-9]{4})?/; if (pattern.test(zip)) { this.value = zip.match(pattern)[0]; this.valueOf = function() { return this.value }; this.toString = function() { return String(this.value) }; } else { throw new ZipCodeFormatException(zip); } } function ZipCodeFormatException(value) { this.value = value; this.message = 'does not conform to the expected format for a zip code'; this.toString = function() { return this.value + this.message; }; } /* * Verifique el código postal * en las direcciones de España. */ const ZIPCODE_INVALID = -1; const ZIPCODE_UNKNOWN_ERROR = -2; function verifyZipCode(z) { try { z = new ZipCode(z); } catch (e) { if (e instanceof ZipCodeFormatException) { return ZIPCODE_INVALID; } else { return ZIPCODE_UNKNOWN_ERROR; } } return z; } a = verifyZipCode(42040); // 42040 b = verifyZipCode(4240); // -1 c = verifyZipCode('a'); // -1 d = verifyZipCode('42040'); // 42040 e = verifyZipCode('42040 1234'); // 42040 1234
Devolver la excepción
Puede usar la expresión throw para devolver la excepción. En el siguiente ejemplo, intentaremos manejar una excepción con un valor numérico a través de la sección catch. Si el valor de esa excepción es mayor que 50, lo lanzaremos nuevamente para el función para manejar o para que el usuario vea:
try { throw n; // lanzar una excepción tiene un valor numérico } catch (e) { if (e <= 50) { // expresiones de software para procesar el valor de 1-50 } else { // No podemos manejar la excepción, entonces le tiraremos throw e; } }
Soporte de navegadores
Característica | Chrome | Firefox | IE | Opera | Safari |
---|---|---|---|---|---|
Soporte básico | sí | sí | sí | sí | sí |
- Expresión const en JavaScript
- Expresión let en JavaScript
- Expresión var en JavaScript
- Expresión try…catch en JavaScript
- Expresión throw en JavaScript
- Continue en JavaScript
- Switch en JavaScript
- Expresiones if…else en JavaScript
- Declaración vacía o empty en JavaScript
- Break en JavaScript
- Sentencia block en JavaScript
- Arguments en JavaScript
- Promise en JavaScript
- Number en JavaScript
- Características JSON en JavaScript
- Array en JavaScript
- RegExp en JavaScript
- String en JavaScript
- Date en JavaScript
- Math en JavaScript
- URIError en JavaScript
- TypeError en JavaScript
- SyntaxError en JavaScript
- ReferenceError en JavaScript
- RangeError en JavaScript
- EvalError en JavaScript
- Características Boolean en JavaScript
- Error en JavaScript
- Función Symbol en JavaScript
- Constructor Function en JavaScript
- Constructor Object en JavaScript
- Función unescape() en JavaScript
- Función eval() en JavaScript
- Valor null en JavaScript
- Características Undefined en JavaScript
- Características NaN en JavaScript
- Características Infinity en JavaScript
- Función parseFloat() en JavaScript
- Función isNaN() en JavaScript
- Función isFinite() en JavaScript
- Función escape() en JavaScript
- Función encodeURIComponent() en JavaScript