JavaScript-异常处理

本文介绍了一种在JavaScript中实现的安全调用方法safeCall。该方法可以捕获并处理函数执行过程中可能出现的异常,确保程序运行的稳定性。同时讨论了使用safeCall可能导致的this上下文丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript-异常处理

/**
 * safeCall - 安全调用方法,能够捕获函数抛出的异常,保证后续逻辑不受此异常影响。
 * safeCall函数,为Function(函数类型)上的扩展函数
 * 例如: 
 * function run(arg1, arg2) {
 *   ...
 * }
 * run.safeCall(arg1, arg2); 即可。
 * 问题:使用了safeCall调用的函数,会导致被调函数(例如:run),丢失本身的this引用。
 */
Function.prototype.safeCall = function() {
    try{
        // this 指向调用方函数
        console.log(this);
        this.apply(null, arguments);
    } catch (error) {
        alert("comFun.safeCall 异常");
        console.log(error);
    }
}


comFun.safeCall = function(func) {
    try{
        if (arguments.length < 1) {
            alert("comFun.safeCall 至少需要一个函数类型参数");
            return null;
        }
        // 获取参数数组
        var arr = Array.prototype.slice.call(arguments);
        // 去除arguments[0](被调函数),并将后续参数传送进去
        return func.apply(null,arr.slice(1));
    } catch (error) {
        alert("comFun.safeCall 异常");
        console.log(error);
    }
}


funcObj.run = function(parm1, parm2) {
    console.log(parm1);
    console.log(parm2);
    console.log(this);
}


comFun.safeCall(funcObj.run, "123", "jjjk")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值