在本教程中,您将学习如何使用 JavaScript try...catch
语句来处理异常。
JavaScript try…catch 语句简介
下面的示例尝试调用不存在的 add()
函数:
let result = add(10, 20);
console.log(result);
console.log('Bye');
并且 JavaScript 引擎抛出未捕获错误:
Uncaught TypeError: add is not a function
错误消息指出 add
不是函数,TypeError
是类型错误。
当 JavaScript 引擎遇到错误时,它会抛出错误并立即终止整个脚本的执行。在上面的例子中,代码在第一行停止执行。
有时,您想处理错误并继续执行。因此,您可以使用 try...catch
语句,下面是 try...catch
语句的语法:
try {
// code may cause error
} catch(error){
// code to handle error
}
在这个语法中:
- 首先,将可能导致错误的代码放在
try
块中。 - 其次,在
catch
块实现逻辑来处理错误。
如果 try
块中发生错误,JavaScript 引擎会立即执行 catch
块中的代码。此外,JavaScript 引擎还为您提供一个错误对象,其中包含错误的详细信息。
基本上,错误对象至少有两个属性:
name
错误的名称。message
错误消息。
如果 try
块中没有发生错误,JavaScript 引擎将忽略 catch
块的代码。
请注意,Web 浏览器可能会向 error
对象添加更多属性。例如,Firefox 向 error
对象添加 filename
、lineNumber
和 stack
属性。
最好只将可能导致异常的代码放在 try
块中。以下流程图说明 try...catch
语句的工作原理:
JavaScript try…catch 语句示例
下面示例使用 try...catch
语句来处理错误:
try {
let result = add(10, 20);
console.log(result);
} catch (e) {
console.log({ name: e.name, message: e.message });
}
console.log('Bye');
输出
{name: 'TypeError', message: 'add is not a function'}
Bye
在这个例子中,我们调用 add()
函数并将返回值赋给 result
变量。因为 add()
函数不存在,所以 JavaScript 引擎会跳过打印 result
输出到控制台的语句:
console.log(result);
并立即执行 catch
块的语句打印错误名称和消息:
console.log({ name: e.name, message: e.message });
由于我们已经处理错误,JavaScript 引擎继续执行最后一条语句:
console.log('Bye');
忽略 catch 块
下面的示例定义返回两个参数之和的 add()
函数:
const add = (x, y) => x + y;
try {
let result = add(10, 20);
console.log(result);
} catch (e) {
console.log({ name: e.name, message: e.message });
}
console.log('Bye');
输出:
30
Bye
在这个例子中,没有错误发生,因为 add()
函数存在。因此,JavaScript 引擎会跳过 catch
块。
异常标识符
当 try 块中发生异常时,catch 块中的异常变量 e 存储着异常对象。
如果你不想使用异常变量,你可以像这样省略它:
try {
//...
} catch {
//...
}
例如,下面使用不带异常变量的 try...catch 语句:
const isValidJSON = (str) => {
try {
JSON.parse(str);
return true;
} catch {
return false;
}
};
let valid = isValidJSON(`{"language":"JavaScript"}`);
console.log(valid);
怎么运行的。
首先,定义判断字符串是否为有效 JSON 的函数 isValidJSON()
, 它接受字符串并返回 true
与 false
,。
为了验证 JSON,isValidJSON()
函数使用了 JSON.parse()
方法和 try...catch
语句。
JSON.parse() 方法解析 JSON 字符串并返回一个对象。如果输入字符串不是有效的 JSON,则 JSON.parse()
抛出异常。
如果没有异常发生,函数 在 try
块中返回 true
。否则,它在 catch
块中返回 false
。
其次,调用 isValidJSON()
函数并将一个 JSON 字符串传递给它:
let valid = isValidJSON(`{"language":"JavaScript"}`);
由于输入字符串是有效的 JSON 格式,isValidJSON()
函数函数返回true
.
最后、输出 result
到控制台:
console.log(valid);
结论
使用 try...catch
语句来处理 JavaScript 的异常。仅将可能导致异常的代码放在try
块中。