JavaScript有异常和错误处理吗(如何进行异常处理?可以自定义吗?)

JavaScript有异常和错误处理吗?如何进行异常处理?可以自定义吗?JS中是否可以自定义异常或错误,常用吗?
JavaScript和Java等一些语言一样,同样提供异常和错误处理,异常处理是处理JS代码运行时及时捕获代码的异常进行处理,这样处理异常后仍然能让页面正常运行,不然页面运行过程中可能会遇到很多无法预知的情况,会导致整个网页都体验极不友好。
JavaScript捕获和处理异常和Java相似,使用try-catch-finally块,try代码块为可能会出错的代码,catch为捕获到异常e,并对异常进行处理,finally块是不管代码是否有异常,该代码块都会执行:

// JavaScript异常处理语法 try{ // 可能会出现异常的代码块 } catch(e){ // 捕获到的异常e,e包含异常的相关信息,在这里对异常进行处理 } finally{ // 最后执行的代码块 }

【JavaScript有异常和错误处理吗(如何进行异常处理?可以自定义吗?)】JavaScript异常处理实例
执行如下代码会抛出异常:Uncaught ReferenceError: basic is not defined
function fn(){ var object = basic; console.log(object); } fn();

那么捕获异常并进行处理的实例如下:
function fn(){ try { var object = basic; console.log(object); } catch (error) { console.log(error); // 捕获并处理异常 } finally{ console.log("go on!"); // 最后执行 } console.log("finished"); // 程序依然正常执行 } fn();

JavaScript如何自定义异常或错误?
使用throw语句,后面跟抛出异常的具体内容,以后程序在执行throw相关的代码时就要记得使用try-catch捕获该异常,否则程序可能会异常终止,throw语句的使用方式如下:
throw "error message"; // 抛出一个字符串 throw 123; // 抛出一个数值 throw false; // 抛出一个布尔值 throw new Error("unexpected string"); // 抛出一个Error对象,该用法较为正式

其中Error对象有如下属性:
Name: 错误名
Number: 错误码
Description: 错误描述
Message: 错误信息,和description相同
其它错误对象有:
EvalError:eval()函数的错误
SyntaxError:语法错误,也是eval()函数中的错误
TypeError:类型错误
自定义异常抛出错误的实例如下:
function fn(number){ if(number > 10) // 自定义抛出异常 throw new Error("the Number is too big."); console.log(number); }try { fn(20); // 执行该函数需要添加try-cathc捕获异常 } catch (error) { console.log(error); } finally{ console.log("end"); }

    推荐阅读