【问题标题】:How execute every Javascript function(or functions inside a scope) with in a try catch block using a coding pattern/framework?如何使用编码模式/框架在 try catch 块中执行每个 Javascript 函数(或范围内的函数)?
【发布时间】:2014-04-21 19:27:25
【问题描述】:

抱歉,问题陈述含糊不清。

详细解释 要求是在 try/catch 块中执行每个 javascript 函数。 不。函数数 = 没有 try catch 块。

示例

var module = function(){
    try{
        something();
    }catch(e){
        something();
    }
};

Try/Catch 的目的

  • 在所有浏览器和设备上记录代码中的所有故障点。

我的尝试

  • 我尝试创建一个将使用bind() 函数调用的函数,以便我可以替换上下文中的this 属性。代码似乎无法正常且始终如一地工作。

为数百个功能这样做是不可行的,也是一种好的做法。您能否提出一些实现相同目标的模式/框架。

【问题讨论】:

  • 如果您必须记录代码中的所有故障,也许是时候考虑编写有效的代码了?
  • 是的,这是我能想到的最佳做法。但需求要求设计包含 try catch 块。

标签: javascript try-catch


【解决方案1】:

为数百个功能这样做是不可行的,也是一种好的做法。您能否提出一些实现相同目标的模式/框架。

您不需要包装内部调用。只有可以实际处理捕获的异常的更高级别的调用才应该有 try/catch 块。换句话说,如果 a 调用 b,b 调用 c,并且 b 在 a 中调用时被包裹在 try/catch 中,那么 c 也是如此。

【讨论】:

  • 以下是遵循的编码模式。 var Module = (function () { var privateMethod = function () {}; return { publicMethodOne: function () { }, publicMethodtwo: function () { }, publicMethodThree: function () { } }; })(); 因此,如果我们将整个“var Module”包装在 try catch 中,它应该可以解决问题。但是如果我们能找到一种模式来包装所有被调用的函数,其他功能也可以实现。比如记录进入和退出以便于调试。
【解决方案2】:

目前我正在使用以下代码来实现问题陈述。

x = function(x){
    console.log(x);
}

logger = {
    log : function(func,args){
    console.log("entering");
    try{
        throw "e";
    }
    catch(e){
        console.log("the error ",e);
        console.trace();
    }
    func();
    console.log("exiting");
    }
}

要调用该函数,我们必须执行以下操作

logger.log(x,2);

它仍然不是一个优化的解决方案,但阻止我重复 try catch 块。

【讨论】:

    猜你喜欢
    • 2016-01-25
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多