错误信息、try_catch、严格模式(十八)

2020/6/25 JS

# 一、错误信息

# 1. SyntaxError 语法错误

// 变量名不规范
var 1 = 1;
var 1ab = 1;
// 关键字赋值
new = 5;
function = 1;
// 基本的语法错误
var a = 5:
function 1test() {}
1
2
3
4
5
6
7
8
9

# 2. ReferenceError 引用错误

test();
console.log(a);
var a = 1 = 2;
var a = 1;
console.log(a) = 1;
1
2
3
4
5

# 3. RangeError 范围错误

// 数组长度赋值为负数
var arr = [1, 2, 3];
arr.length = -1;
console.log(arr);
// 对象方法参数超出可行范围
var num = new Number(66.66);
console.log(num.toFixed(-1));
1
2
3
4
5
6
7

# 4. TypeError 类型错误

// 调用不存在的方法
123();
var obj = {};
obj.say();
var a = new 'string';
1
2
3
4
5

# 5. URIError URI错误

URI: UNIFORM RESOURCE IDENTIFIER 统一资源标识符 URL: UNIFORM RESOURCE LOCATOR 统一资源定位符 URN: UNIFORM RESOURCE NAME 统一资源名称

var myUrl = 'http://www.baidu.com?name=你好哈哈';
var newUrl = encodeURI(myUrl);
console.log(newUrl);
var newNewUrl = decodeURI(newUrl);
console.log(newNewUrl);

var str = decodeURI('%fdsdf%');
1
2
3
4
5
6
7

# 6. EvalError eval函数执行错误

eval('var a = 1; console.log(a)');

var obj = {
  a: 1,
  b: 2
};

console.log(eval('obj'));

var error = new Error('代码错误了');
console.log(error);
1
2
3
4
5
6
7
8
9
10
11

# 二、try_catch

系统自动为我们抛出错误。

console.log('正常执行1');
console.log(a); // ReferenceError
console.log('非正常执行'); // 不执行
1
2
3

手动抛出错误的方法:try catch finally throw

try {
  console.log('正常执行1');
  console.log(a); // 执行报错
  console.log(b); // 不执行
  console.log('正常执行2');
} catch (error) {
  console.log(error.name + ':' + error.message);
} finally {
  console.log('正常执行3');
}

console.log('正常执行4');
1
2
3
4
5
6
7
8
9
10
11
12
// JSON字符串
var jsonStr = '';

try {
  if (jsonStr == '') {
    throw 'JSON字符串为空';
  }
  console.log('我要执行啦!!!!');
  var json = JSON.parse(jsonStr);
  console.log(json);
} catch (error) {
  console.log(error);
  var errorTip = {
    name: '数据传输失败',
    errorCode: '10010'
  }
  console.log(errorTip);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#

# 三、严格模式

ES5严格模式 ECMAScript 97 1.0 98 2.0 99 3.0 JS通行标准 07 4.0草案 08 4.0中止 3.1 Harmony -> ECMAScript5 09 5.0发布 Harmony -> 1/2 js.next 1/2 js.next.next 11 5.1 ISO国际标准 13 ES6 = js.next js.next.next 7 13 ES6草案发布 15 ES6正式发布 ECMAScript2015

'use strict'
1
function test() {
  'use strict';
}

var test = (function () {
  'use strict';
})();
1
2
3
4
5
6
7
var a = 1;
var obj = {
  a: 2
};

function test() {
  var a = 3;
  with(window) {
    console.log(a);
  }
}
test();
'use strict';
var obj = {
  a: 1,
  a: 2,
};
console.log(obj.a); // 2
'use strict'
eval('var a = 1; console.log(a);');
console.log(a);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Last Updated: 2022/7/21 10:52:53
Genshin Impact bgm
Genshin Impact