在上一教程中,您学习了使用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
作为一种表达。
注意 :您还可以将其他内置错误构造函数用于标准错误: TypeError
, SyntaxError
, ReferenceError
, TypeError
, EvalError
, InternalError
和RangeError
。
例如,
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
语句重新throw
到catch
块中,该语句将被执行。
在这里, catch
块处理异常,并且不会发生错误。因此, throw
语句不会被重新throw
。
如果该错误未由catch块处理,则throw语句将被重新抛出并显示错误消息Uncaught Error:该值很低