MST

星途 面试题库

面试题:JavaScript 中 async/await 异常捕获与错误处理机制

假设有多个 async 函数构成一个异步操作链,每个函数都可能抛出不同类型的异常(如网络异常、数据解析异常等)。请设计一个通用的错误处理机制,能区分不同类型的异常,并进行针对性处理,同时要保证代码的可读性和可维护性,给出详细代码实现。
11.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
// 模拟不同类型的异步函数
async function asyncFunction1() {
    // 模拟网络异常
    throw new Error('Network error');
}

async function asyncFunction2() {
    // 模拟数据解析异常
    throw new Error('Data parsing error');
}

// 通用的错误处理函数
function handleError(error) {
    if (error.message.includes('Network error')) {
        console.error('处理网络异常:', error.message);
    } else if (error.message.includes('Data parsing error')) {
        console.error('处理数据解析异常:', error.message);
    } else {
        console.error('处理其他异常:', error.message);
    }
}

// 异步操作链
async function asyncChain() {
    try {
        await asyncFunction1();
        await asyncFunction2();
    } catch (error) {
        handleError(error);
    }
}

// 执行异步操作链
asyncChain();

上述代码中:

  1. 定义了两个模拟的异步函数 asyncFunction1asyncFunction2,分别抛出不同类型的异常。
  2. handleError 函数用于区分不同类型的异常,并进行针对性处理。通过检查异常信息中是否包含特定的字符串来判断异常类型。
  3. asyncChain 函数是异步操作链,使用 try...catch 捕获异常,并调用 handleError 函数进行处理。
  4. 最后执行 asyncChain 函数启动整个异步操作链。

这种方式保证了代码的可读性和可维护性,当有新的异常类型出现时,只需在 handleError 函数中添加新的判断逻辑即可。