个性化阅读
专注于IT技术分析

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

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");
}
赞(0)
未经允许不得转载:srcmini » JavaScript有异常和错误处理吗?如何进行异常处理?可以自定义吗?

评论 抢沙发

评论前必须登录!