在本教程中,您将借助示例了解 JavaScript throw 语句。
在上一个教程中,您学习了使用 JavaScript try…catch 语句处理异常。try 和 catch 语句以 JavaScript 提供的标准方式处理异常。同时,可以使用 throw 语句传递用户定义的异常。
在 JavaScript 中,throw 语句处理用户定义的异常。例如,如果某个数字除以 0,并且需要将 Infinity 视为异常,则可以使用 throw 语句来处理该异常。
throw 语句的语法是:
throw expression;
在这里,expression 指定异常的值。
例如,
const number = 5;
throw number/0; // generate an exception when divided by 0
注意:表达式可以是字符串、布尔值、数字或对象值。
try…catch…throw 的语法为:
try {
// body of try
throw exception;
}
catch(error) {
// body of catch
}
注意:当执行 throw 语句时,它退出块并转到 catch 块。并且 throw 语句下面的代码不会执行。
const number = 40;
try {
if(number > 50) {
console.log('Success');
}
else {
// user-defined throw statement
throw new Error('The number is low');
}
// if throw executes, the below code does not execute
console.log('hello');
}
catch(error) {
console.log('An error caught');
console.log('Error message: ' + error);
}
输出
An error caught
Error message: Error: The number is low
在上述程序中,检查了一个条件。如果数字小于51,则抛出错误。这个错误是使用 throw 语句抛出的。
throw 语句将字符串 The number is low 指定为表达式。
注意:您还可以对标准错误使用其他内置错误构造函数: TypeError, SyntaxError, ReferenceError, EvalError, InternalError,和 RangeError。
例如,
throw new ReferenceError('this is reference error');
您还可以在 catch 块中使用 throw 语句来重新引发异常。例如,
const number = 5;
try {
// user-defined throw statement
throw new Error('This is the throw');
}
catch(error) {
console.log('An error caught');
if( number + 8 > 10) {
// statements to handle exceptions
console.log('Error message: ' + error);
console.log('Error resolved');
}
else {
// cannot handle the exception
// rethrow the exception
throw new Error('The value is low');
}
}
输出
An error caught
Error message: Error: This is the throw
Error resolved
在上面的程序中,throw 语句在 try 块中用于捕获异常。throw 语句在 catch 块中再次出现,如果 catch 块无法处理异常,就会执行该语句。
在这里,catch 块处理异常,没有错误发生。因此,throw 语句不需要再次出现。
如果错误没有被 catch 块处理,throw 语句将被重新调用,并显示错误消息 Uncaught Error: The value is low 。
上一教程 :JS try…catch…finally 下一教程 :JS Modules
[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/throw
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zsx0728/article/details/124407966
内容来源于网络,如有侵权,请联系作者删除!