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")