JS异常捕获及处理

        实际开发中经常会遇到由于局部代码出错而导致整个项目的崩溃,因此在开发过程中有意识地捕获异常并抛出错误是极其有必要的。

        下面记录一下JS中的一些错误处理机制。

1.Error对象

Error是Javascript的一个内置对象,可以让我们手动创建错误对象并提供错误信息。

// 创建Error对象
const error = new Error('perosnal Error');
// Error对象name =>Error
console.log(error.name);
// Error对象错误信息 => 'perosnal Error'
console.log(error.message);
// Error错误执行栈
console.log(error.stack);

但是只创建Error对象,程序并不会抛出错误/终止执行。想要将创建的错误对象抛出,就需要用到throw语句。

2.throw

throw是JS异常处理的核心语句,使用它就可以将我们生成的错误信息抛出并终止程序运行。

throw语句用来抛出一个用户自定义的异常。当前函数的执行将被停止(throw之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个catch块。如果调用者函数中没有catch块,程序将会终止。

throw语句可以抛出任意类型的错误。

throw "Error2"; // 抛出了一个值为字符串的异常
throw 42;       // 抛出了一个值为整数42的异常
throw true;     // 抛出了一个值为true的异常

搭配try...catch语句可以可控制地进行异常捕获处理。例如在发送网络请求等存在不确定因素时,就可以使用try...catch来保证程序的健壮性。

try {
    if (1 < 2) {
        throw 'an error';
    }
} catch (error) {
    // throw出来的异常,会在下面的第一个catch中捕获到,如此不会尽管发生了错误,也并不会终止整个程序执行
    console.log(error);
}

3.程序报错机制

1.JS运行时自带的报错功能(错误检测机制)

语法错误,例如:使用未定义变量,方法。

2.由外部库提供的报错机制

引用的外部库没有按照规范使用时,其内部报错,例如React中渲染元素时children为对象类型<span>{obj}</span>,此时React程序就会报错。

3.手动抛出异常

代码中手动:throw 'Error';

4.try...catch

详见throw语句说明。它的作用就是允许程序出错,并抛出错误,之后继续执行try catch之后的代码。

注意:正常情况下 try...catch只能捕获同步代码中的错误,但是使用async和await就可以捕获到异步行为中的错误。

const fs = require('fs');
// 一个读取文件内容的方法
// log顺序 'MyError' => '异步代码后面的内容'
const readFile = async () => {
    try {
        await new Promise((resolve, reject) => {
            fs.readFile('错误url', (err, data) => {
                if (err) reject(err);
                console.log(data);
            })
        })
    } catch (error) {
        console.log('MyError', error);
    }
    console.log('异步代码后面的内容');
}
readFile();

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值