JavaScript 错误处理

捕获错误的三种形式


// 完整的写法
try {

} catch (e) {
    console.log('出错了:', e);

    if (e instanceof TypeError) {
        console.log('类型错误!');
    } else if (e instanceof Error) {
        console.log(e.message);
    } else {
        console.log('Error:' + e);
    }

} finally {

}

// 只有 try ... catch 没有 finally
try {

} catch (e) {

}

// 只有 try ... finally 没有 catch
try {

} finally {

}

抛出错误

程序也可以主动抛出一个错误,让执行流程直接跳转到 catch 块。抛出错误使用 throw 语句。


try {
    throw new Error('随便报错');
} catch (e) {
    console.log('出错了:' + e);  // 出错了:Error: 随便报错
}

异步错误处理

涉及到异步代码,无法在调用时捕获,原因就是在捕获的当时,回调函数并未执行,因此我们需要在回调函数中捕获异常。

自定义异常类


module.exports =  class ApiError extends Error {

    constructor(code, message) {
        super();
        // 未定义错误信息,就默认 500 服务器内部错误
        this.code = code || 500
        this.message = message || '未定义错误提示信息';
    }

}

results matching ""

    No results matching ""