如何抛出Ember.js错误?

时间:2014-04-16 06:25:25

标签: ember.js

在ember.js应用程序中,我们如何抛出应用程序错误(让它们在控制器路由应用程序层次结构中冒泡?)

我的用例与捕获非ember-data ajax错误并通过与ember数据错误相同的路径处理它们有关。

(即,当遇到来自非restful端点的错误时,允许该错误在应用程序中冒泡,类似于ember-data错误)

2 个答案:

答案 0 :(得分:5)

如果您想抛出错误,请使用throw new Error("Message");

用户被重定向到error路线。

使用Promise,您可以对异常做出反应并处理它们。

请参阅:http://emberjs.com/api/classes/RSVP.Promise.html

答案 1 :(得分:2)

Ember拥有自己的EmberError类,该类将Javascript错误类作为子类。

import EmberError from '@ember/error';

export default Route.extend({
  /* Pseudo code... */
  model() {
    if(/* something bad happens */) {
      throw new EmberError('Oh, no! Something bad happened!');
    }
  },
});

您可以通过路线中的错误操作来执行此操作。如果您希望它冒泡,请记住返回true

actions: {
  error(error) {
    // do something
    return true;
  },
},

Ember自动创建一个错误子状态和一个错误模板,您可以在其中显示有关错误的信息(无需重定向)。您可以像这样在application-error.hbserror.hbs中显示错误信息:

<h1>{{model.name}} {{model.status}}</h1>
{{model.stack}}

有关更多选项,请参见Ember substate guide