Javascript异常


正在学习,请勿打扰

1.异常介绍

异常就是程序中出现错误从而导致运行结果不正确(报错)或者无法运行的情况。例如,访问一个未定义的变量

console.log(a);

运行之后就会出现如下错误:
ReferenceError
又例如访问一个对象的不存在的属性:

var emp = undefined;
console.log(emp.name);

TypeError

2.捕获异常

Javascript中一旦某一语句出现异常,下面的代码都不会执行,程序就会停止。因为,出现异常时我们需要去捕获它这样才能继续往下执行。捕获异常用到try...catch语法。

try {
    var emp = undefined;
    console.log(emp.name);
} catch(err) { //err就是接收到的错误异常
    console.log(err);
    console.error(err);
} finally {
    console.log("无论是否出现异常这行语句都会执行");
}

console.log("这行语句会执行");

捕获异常

3.throw抛出异常

throw语句允许您创建自定义错误。从技术上讲您能够抛出异常(抛出错误)。异常可以是 JavaScript 字符串、数字、布尔或对象

function fetchDate() {
    console.log("获取数据");
    throw "404";
}

try {
    fetchDate();
} catch (e) {
    if(e === "404") {
        console.error("没有查询到数据");
    }
}

throw抛出异常

4.Error对象
class ApiError extends Error { //自定义一个Error类型
    constructor(url,...params) {
        super(...params);
        this.url = url; //可以新增参数url,指明错误的地址
        this.name = "ApiError"; //将Error对象的name设定为ApiError
    }
}

function fetchDate() {
    console.log("获取数据");
    throw new ApiError("/post","404"); //抛出一个新的Error对象
}

try {
    fetchDate();
} catch (e) {
    console.error(e);
    console.error(e.name);
    console.error(e.message);
    console.error(e.url);
}

Error对象

5.捕获多个异常
class ApiError extends Error { //自定义一个Error类型
    constructor(url,...params) {
        super(...params);
        this.url = url; //可以新增参数url,指明错误的地址
        this.name = "ApiError"; //将Error对象的name设定为ApiError
    }
}

function fetchDate() {
    console.log("获取数据");
    console.log(a); //再定义一个错误,异常
    throw new ApiError("/post","404"); //抛出一个新的Error对象
}

try {
    fetchDate();
} catch (e) {
    if (e instanceof ReferenceError) {
        console.log("程序异常...");
    } else if (e instanceof ApiError){ //如果将 console.log(a); 注释掉就是提示 Api异常...
        console.log("Api异常...");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偶尔躲躲乌云_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值