Evan's blog Evan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)

conanan

真相只有一个
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)
  • 入门

  • 理解

  • 语法

    • 2 语法-1 基础语法
    • 2 语法-1 ES6
    • 2 语法-2 Function
    • 3 标准内置对象-1 Object
    • 3 标准内置对象-2 String
    • 3 标准内置对象-3 Array
    • 3 标准内置对象-4 RegExp
    • 3 标准内置对象-5 Number
    • 3 标准内置对象-6 Math
    • 3 标准内置对象-7 Date
    • 3 标准内置对象-8 JSON
    • 3 标准内置对象-9 Set
    • 3 标准内置对象-10 Map
    • 4 面向对象
    • 5 异常
      • 常见异常
      • try...catch
      • throw
  • 异步

  • 模块化

  • 网络

  • DOM&BOM

  • 常用框架

  • JS
  • 语法
xugaoyi
1984-01-24
目录

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

# 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

# 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
编辑 (opens new window)
上次更新: 2022/03/23, 17:55:39
4 面向对象
6 异步-1 定时器

← 4 面向对象 6 异步-1 定时器→

最近更新
01
重点
04-12
02
搭建项目
04-04
03
TS补充
03-30
更多文章>
Theme by Vdoing | Copyright © 2019-2022 conanan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式