📅  最后修改于: 2023-12-03 15:27:55.216000             🧑  作者: Mango
在Javascript中,我们可以使用return
语句来停止函数的执行并且返回一个值,这在函数中非常常见。但是,你是否知道Javascript中还有另外一种情况可以停止代码的执行,并且不会返回任何值呢?
这个方法就是使用throw
语句。
使用throw
语句可以抛出一个异常,这个异常会中断当前代码的执行直到被捕获(或者程序崩溃)。throw
语句通常和try...catch
语句一起使用。
以下是一个使用throw
语句的例子:
function divide(a, b) {
if (b === 0) {
throw "Cannot divide by zero";
}
return a / b;
}
try {
console.log(divide(10, 0));
} catch (err) {
console.log(err);
}
在这个例子中,如果b
为0,则divide
函数会抛出异常,中断当前代码执行,并返回"Cannot divide by zero"
这个错误信息。然后,try...catch
语句捕获了这个异常,打印出来。
和try...catch
语句一起使用的还有另外一个语句,就是finally
语句。finally
语句会在try
语句块之后无论是否发生异常都会执行。比如,在divide
函数中,我们可以使用finally
语句来释放资源:
function divide(a, b) {
let result;
try {
if (b === 0) {
throw "Cannot divide by zero";
}
result = a / b;
} catch (err) {
console.log(err);
} finally {
console.log("done");
}
return result;
}
divide(10, 2); // 输出 "done"
在这个例子中,如果try
块中没有发生异常,finally
语句也会执行并输出"done"
。
在抛出异常后,我们通常需要使用catch
语句来捕获异常,并且执行一些操作。catch
语句可以接收一个参数,它就是抛出的异常对象。
以下是一个简单的catch
语句的例子:
try {
console.log("foo");
throw "bar";
} catch (err) {
console.log(err); // 输出 "bar"
}
在这个例子中,我们抛出了异常"bar"
,并且在catch
语句中捕获这个异常,并且输出到控制台中。
在Javascript中,我们可以使用throw
语句来抛出异常,使用try...catch
语句捕获异常,并且使用finally
语句来释放资源或者执行一些必要的操作。在处理程序中,异常处理是一个非常重要的部分,需要仔细地考虑。