面试题答案
一键面试- 使用
try - catch - finally
语句:- 在JavaScript中,可以在最外层使用
try - catch - finally
块来捕获内部函数调用可能抛出的错误。try
块内放置可能产生错误的代码,catch
块捕获并处理错误,finally
块无论是否发生错误都会执行。 - 示例:
- 在JavaScript中,可以在最外层使用
function C() {
// 模拟可能产生错误的操作
if (Math.random() < 0.5) {
throw new Error('C函数出现错误');
}
return 'C函数执行成功';
}
function B() {
return C();
}
function A() {
return B();
}
try {
const result = A();
console.log(result);
} catch (error) {
console.log('捕获到错误:', error.message);
} finally {
console.log('无论是否出错,都会执行此代码');
}
- 使用
async - await
结合try - catch
(适用于异步函数):- 如果函数A、B、C中有异步操作(例如
async
函数或返回Promise
的函数),可以使用async - await
语法,并在外部try - catch
块中捕获错误。 - 示例:
- 如果函数A、B、C中有异步操作(例如
async function C() {
// 模拟可能产生错误的异步操作
return new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() < 0.5) {
reject(new Error('C函数异步操作出现错误'));
} else {
resolve('C函数异步执行成功');
}
}, 1000);
});
}
async function B() {
return await C();
}
async function A() {
return await B();
}
async function main() {
try {
const result = await A();
console.log(result);
} catch (error) {
console.log('捕获到异步错误:', error.message);
}
}
main();
这样,在不破坏原有代码逻辑结构的基础上,错误能够正确地冒泡到顶层进行统一处理。