Javascript异常
![正在学习,请勿打扰](https://i-blog.csdnimg.cn/blog_migrate/9d902008e9b99dbadc9ab4ba3a021c04.gif#pic_center)
1.异常介绍
异常就是程序中出现错误从而导致运行结果不正确(报错)或者无法运行的情况。例如,访问一个未定义的变量:
console.log(a);
运行之后就会出现如下错误:
又例如访问一个对象的不存在的属性:
var emp = undefined;
console.log(emp.name);
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("没有查询到数据");
}
}
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);
}
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异常...");
}
}