Abh*_*hek 14 exception-handling node.js sails.js
我几天前刚开始尝试SailsJS.
我已经意识到只要有未捕获的异常,就会终止Node.
我有一个控制器列表,每个控制器调用服务/中的特定服务JS文件(包含逻辑和数据库调用).
我是否可以为所有服务编写全局错误处理程序,以便应该由它处理从这些服务发生的任何类型的错误,并且必须将适当的错误响应传递给前端.  
我尝试使用process.on('uncaughtexception')或一些基本异常,但需要将其添加到每个服务方法中.
对于从客户端到服务器的所有服务调用,我也可以有一个共同的点,所有io.socket.post()和io..socket.get()都通过它来完成
我将非常感谢任何指针/文章,它将向我展示在SailsJS中处理未捕获的异常并使用更短的代码而不是在所有服务中编写冗余代码的常见最佳实践.
最佳实践是在控制器中使用域。这将处理异步代码中的异常,并且相对简单。
您可以使用trycatch之类的东西来稍微简化一些事情,但基于域的异常将是最有效的。它将确保异常不会使您的应用程序崩溃。只需在控制器中创建一个新域并在该域内运行控制器方法即可。
Sailsjs 基于 Express,您可以使用连接中间件,并且可以从中间件无缝创建新域。有诸如express-domain-middleware之类的东西。这可能是最美观的选择,也是最方便的。
更新: 正如 Benjamin Gruenbaum 提到的,域计划在节点 v1 中被弃用。也许您应该阅读Joyents 错误处理最佳实践。它与您正在使用的框架无关。
此外,您仍然可以使用 Domains,但没有办法全局处理 node.js 中的错误。一旦被弃用,您总是可以相对容易地消除对域的依赖。也就是说,最好不要仅仅依赖域。
Strongloop 还提供了一个受名为Zone 的领域启发的库。这也是一种选择。
| 归档时间: | 
 | 
| 查看次数: | 4234 次 | 
| 最近记录: |