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");
}
推荐阅读
- 不理解JS的模块化,JavaScript的模块化是如何演变或发展来的(如何实现?)
- JavaScript中函数调用分别都有哪些方式(对应的使用场景是什么?)
- AngularJS | angular.isString()函数用法介绍
- Python中的numpy.square()用法详细介绍
- 算法设计(过马路所需的最低初始能量)
- 了解C语言中的volatile限定符第2组(示例)
- 算法设计(从未排序的链表中删除重复项)
- Nodejs使用MongooseJS将MongoDB与Node应用程序连接
- PHP Ds Queue count()函数