如何在Ember中创建自定义错误类?

jaa*_*arv 4 ember.js ember-cli

在Ember中创建自定义错误类的正确方法是什么以及将错误类定义文件放在Ember CLI中的位置?

我发现的所有代码示例都在乱搞JavaScript对象原型.为什么我不能像正常的Ember对象一样调用Ember.Error.extend?

自定义错误类的正确位置应该在app/errors /目录下,但似乎Ember CLI没有解析这些文件.

Dan*_*mak 9

例如在app/errors/目录中创建自定义文件,然后调用它custom-error.js.

使用以下代码作为基础来声明自定义错误类:

import Ember from 'ember';

let CustomError = function (errors, message = 'This error is result of my custom logic.') {
  Ember.Error.call(this, message);

  this.errors = errors || [
    {
      title: 'This is custom error.',
      detail: message
    }
  ];
}

CustomError.prototype = Object.create(Ember.Error.prototype);

export default CustomError;
Run Code Online (Sandbox Code Playgroud)

然后,如果你想在某处使用这个错误:

import Ember from 'ember';
import CustomError from '../errors/custom-error';

export default Ember.Controller.extend({
  appName: 'Ember Twiddle',
  testCustomError: Ember.on('init', () => {
    let customErrorInstance = new CustomError();
    console.log(customErrorInstance);
  })
});
Run Code Online (Sandbox Code Playgroud)

结果console.log(customErrorInstance)是:

CustomError {description:undefined,fileName:undefined,lineNumber:undefined,message:"此错误是我的自定义逻辑的结果.",name:"Error"...}