📜  JavaScript throw语句

📅  最后修改于: 2020-09-27 07:45:14             🧑  作者: Mango

在本教程中,您将在示例的帮助下了解JavaScript throw语句。

在上一教程中,您学习了使用JavaScript try..catch语句处理异常。 try和catch语句以JavaScript提供的标准方式处理异常。但是,可以使用throw语句传递用户定义的异常。

在JavaScript中, throw语句处理用户定义的异常。例如,如果某个数字除以0 ,并且需要将Infinity视为异常,则可以使用throw语句来处理该异常。


JavaScript throw语句

throw语句的语法为:

throw expression;

此处, expression指定异常的值。

例如,

const number = 5;
throw number/0; // generate an exception when divided by 0

注意 :表达式可以是字符串,布尔值,数字或对象值。


用try … catch抛出JavaScript

try...catch...throw的语法为:

try {
    // body of try
    throw exception;
} 
catch(error) {
    // body of catch  
}

注意 :执行throw语句时,它退出该块并转到catch块。并且throw语句下面的代码不会执行。


示例1:try … catch … throw示例

let 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作为一种表达。

注意 :您还可以将其他内置错误构造函数用于标准错误: TypeErrorSyntaxErrorReferenceErrorTypeErrorEvalErrorInternalErrorRangeError

例如,

throw new ReferenceError('this is reference error');

抛出异常

您还可以在catch块内使用throw语句重新抛出异常。例如,

let 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

在上面的程序中,在try块中使用throw语句来捕获异常。如果catch块无法处理异常,则将throw语句重新throwcatch块中,该语句将被执行。

在这里, catch块处理异常,并且不会发生错误。因此, throw语句不会被重新throw

如果该错误未由catch块处理,则throw语句将被重新抛出并显示错误消息Uncaught Error:该值很低