【笔记20】Javascript - try...catch


try...catch

编码中,不论是自己还是同事,都会经常会出错而不自知。try ... catch 给我们容错的办法。

先来看个明显的错误:

console.log(abc);

Javascript(笔记20) - try...catch_错误信息

在我们不确定会不会出错的时候,就可以使用 try ... catch 了。 

把正式的代码写在 try 的大括号里:出错后,不抛出错误,后续的代码也能执行。

当 try 里的代码没有问题,就都会顺利执行,包括 try ... catch 之后的代码。但catch里的代码不会被执行。

当 try 里的代码有错误时,错误之前的代码会执行,错误之后的代码不会执行,错误信息会被封装在catch 里的 e 对象中,我们可以输出错误信息;

当 try 里的代码不止一行有错误时,也只会在出错的那一行就停止执行,后面的错误会被忽略;

try ... catch 之后的代码可以正常执行,这也是 try ... catch 存在的意义。

catch 中的 e 对象会存储两个属性: e.name 和 e.message,可以输出这两个属性的值来查看。

try{
console.log("a");
console.log(b);
console.log("c");
}catch(e){
console.log(e.name + ":" + e.message);
console.log("e");
}
console.log("d");

看下控制台输出:

Javascript(笔记20) - try...catch_错误信息_02

try 里的正确代码会被执行,a 被输出。

try 里的第二行出错了,错误信息被catch捕捉存在 e 对中,在控制台输出,格式跟报错时的一样,同时 catch 里的其他代码也会被执行。

try 里面的,在出错后的代码将被忽略,不会被执行,c 没有执行。

try ... catch 之后的代码不受影响,可以正常执行,d 被输出。


Error.name的六种值对应的信息: 

1,EvalError: eval()的使用与定义不一致;

2,RangeError:数值越界;

3,ReferenceError:非法或不能识别的引用数值;

4,SyntaxError:发生语法解析错误;

5,TypeError:操作数类型错误;

6,URIError:URI处理函数使用不当;

常见的也就3和4了;

ReferenceError ,但凡没有定义就使用的,都会报这个错误了;

SyntaxError,语法解析错误,通常被认为低级错误;