在ember.js应用程序中,我们如何抛出应用程序错误(让它们在控制器路由应用程序层次结构中冒泡?)
我的用例与捕获非ember-data ajax错误并通过与ember数据错误相同的路径处理它们有关。
(即,当遇到来自非restful端点的错误时,允许该错误在应用程序中冒泡,类似于ember-data错误)
答案 0 :(得分:5)
如果您想抛出错误,请使用throw new Error("Message");
。
用户被重定向到error
路线。
使用Promise,您可以对异常做出反应并处理它们。
答案 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.hbs
或error.hbs
中显示错误信息:
<h1>{{model.name}} {{model.status}}</h1>
{{model.stack}}
有关更多选项,请参见Ember substate guide。