JavaScript有异常和错误处理吗?如何进行异常处理?可以自定义吗?JS中是否可以自定义异常或错误,常用吗?
JavaScript和Java等一些语言一样,同样提供异常和错误处理,异常处理是处理JS代码运行时及时捕获代码的异常进行处理,这样处理异常后仍然能让页面正常运行,不然页面运行过程中可能会遇到很多无法预知的情况,会导致整个网页都体验极不友好。
JavaScript捕获和处理异常和Java相似,使用try-catch-finally块,try代码块为可能会出错的代码,catch为捕获到异常e,并对异常进行处理,finally块是不管代码是否有异常,该代码块都会执行:
// JavaScript异常处理语法
try{
// 可能会出现异常的代码块
}
catch(e){
// 捕获到的异常e,e包含异常的相关信息,在这里对异常进行处理
}
finally{
// 最后执行的代码块
}
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");
}
评论前必须登录!
注册