【问题标题】:Error vs Meteor.Error错误与流星。错误
【发布时间】:2015-01-15 05:37:41
【问题描述】:

throw new Error 和使用Meteor.Error() 有什么区别?是不是很简单throw new Error不会显示给客户端,只显示在服务器上(客户端会收到500 Internal server error);和Meteor.Error 将被发送给客户端。

还有什么不同吗?例如。是否会破坏 Fibers,停止下游代码?

【问题讨论】:

    标签: error-handling meteor


    【解决方案1】:

    Meteor.Error 的主要内容就像你提到的那样

    • 完整的堆栈跟踪(错误可能不会总是给出)
    • 可以以有限的非公开形式将错误发送给客户端。
    • 在某些情况下向服务器隐藏错误(如果它在方法或发布方法中抛出,以及从诸如 Accounts.onLoginAttempt 之类的钩子中抛出)
    • 内部的对象是 EJSON 序列化的,因此可以将各种数据向下发送到客户端
    • 当 Meteor.Error 被抛出时,由于 EJSON 序列化,您会在服务器端获得更多信息。
    • Meteor 可以更好地显示错误。 通常你可以得到[Object object]作为从普通错误中显示的原因,当它们来自普通错误时,来自Meteor.wrapAsync

    没有什么不同,Meteor.ErrorError 的子类,具有上述更改。

    所以他们都会停止下游代码。谈到 Fibers,如果以任何方式将普通的 Fiber 从 Fiber 中抛出,它可能会停止您的应用程序(在服务器端而不是在 methodstartupMeteor.setIntervalpublish、等)

    它的定义也很小:https://github.com/meteor/meteor/blob/devel/packages/meteor/errors.js

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2014-08-03
      • 2017-05-06
      • 1970-01-01
      相关资源
      最近更新 更多