5 异常
# 异常
# 常见异常
console.log(a); // Uncaught ReferenceError: a is not defined.跑异常后面的代码其实不会执行了
var emp = undefined;
console.log(emp.name); // Uncaught TypeError: Cannot read property 'name' of undefined
1
2
3
4
2
3
4
# try...catch
try {
console.log(a);
} catch (error) {
console.error(error); // Uncaught ReferenceError: a is not defined
} finally {
console.log("总会执行");
}
try {
var emp = undefined;
console.log(emp.name);
} catch (error) {
console.error(error); // TypeError: Cannot read property 'name' of undefined
} finally {
console.log("总会执行");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# throw
class ApiError extends Error {
constructor(url, ...params) {
super(...params);
this.name = "ApiError";
this.url = url;
}
}
function fetchData() {
console.log("获取数据...");
console.log(a);
throw new ApiError("/api/hello", "404"); //不推荐,应该继承异常对象
}
try {
fetchData();
} catch (error) {
if (error instanceof ReferenceError) {
console.log("程序异常");
} else if (error instanceof ApiError) {
console.error(error);
console.error(error.name); // ApiError
console.error(error.message); // 404
console.error(error.url); // /api/hello
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
编辑 (opens new window)
上次更新: 2022/03/23, 17:55:39