2015-04-23 43 views
1

我正在开发我的第一个Javascript应用程序,我试图去面向对象。 有一个基本的闭包返回我的主要对象和我调用该对象中休息的每个函数。一些伪代码是这样的:Javascript结构化错误处理

primary = (function(){ 
var object = { 
    doSomething = function(){}; 
}, 
return {intance:function(return object)} 
}); 

//invocation 
primary.instance().doSomething(); 

我所试图实现的是一个错误处理功能附加到我的object,以便每当有一个内部错误,毫无遗漏的是,我不必须将每个函数调用包装在trycatch块中。

我试过object.onerrorerror继续window object。也许我错了这个概念。我试图在Github上搜索一些包含结构化错误处理的简单框架,但没有运气。我在PHP中很熟悉这一点,但是到目前为止我还没有在Javascript中完成这项工作。有人能告诉我一个例子,它是如何完成的吗?

编辑:我知道,结构化的错误处理更进一步,我只是想获得一个根处理,这样就没有错误/异常可以传递到window object

+3

取决于你的目标是什么,但我认为你做错了,并弄错了。你正在创建一个能够完成所有事情的上帝对象,这通常不是一件好事,而且在JavaScript错误中通常会停止执行,这很好,通常不应该为每个可能的错误都保证try/catch块。如果您希望发生错误,请处理发生的错误,否则请假设您的代码正常工作。 – adeneo

+0

是doSomething在里面抛出一个错误或一些服务?因为你没有在方法中传递任何参数,所以我认为它是另一种服务可能是异步的 - 在这种情况下,你不应该抛出错误,因为在错误发生之前,某些东西会完成执行。 – webduvet

+0

忽略用于您的应用的设计模式以及如何实现您的错误处理程序,代码中存在很多语法错误。 – andybeli

回答

0

error事件处理没有尝试捕捉块停止执行脚本(除已调用的任何异步函数外)。

您可以通过捕捉它们document.body或多个特定对象抑制(非Ajax,非语法)错误,并阻止他们被抛出给用户(或达到window对象)通过使用e.preventDefault()return false,并且通过将事件对象作为参数传递给全局/对象处理程序(用于检查或记录) - 但是这些选项中的任何一个都会使脚本执行停止超出错误点。这是try catch块的主要优点,据我所知,没有办法解决这个问题。