相关疑难解决方法(0)

什么是在JavaScript中扩展错误的好方法?

我想在我的JS代码中抛出一些东西,我希望它们是instanceof Error,但我也想让它们成为别的东西.

在Python中,通常会有一个子类Exception.

在JS中做什么是合适的?

javascript error-handling exception

340
推荐指数
16
解决办法
11万
查看次数

JavaScript中的自定义例外

我可以在JavaScript中为用户定义的异常定义自定义类型吗?如果可以的话,我该怎么做?

javascript exception

216
推荐指数
10
解决办法
10万
查看次数

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

出于某种原因,看起来构造函数委派在以下代码段中不起作用:

function NotImplementedError() { 
  Error.apply(this, arguments); 
}
NotImplementedError.prototype = new Error();

var nie = new NotImplementedError("some message");
console.log("The message is: '"+nie.message+"'")
Run Code Online (Sandbox Code Playgroud)

运行这个给出The message is: ''.有关为什么,或者是否有更好的方法来创建新Error子类的任何想法?是否存在我不知道apply的本机构Error造函数的问题?

javascript exception

200
推荐指数
10
解决办法
13万
查看次数

ECMAScript 6是否有抽象类约定?

我很惊讶在阅读ES6时我找不到关于抽象类的任何内容.(通过"抽象类"我正在谈论它的Java含义,其中抽象类声明了子类必须实现的方法签名才能实现可实现化).

有没有人知道在ES6中实现抽象类的任何约定?能够通过静态分析捕获抽象类违规会很好.

如果我在运行时提出错误来表示尝试抽象类实例化,那么错误是什么?

javascript oop abstract-class ecmascript-6

151
推荐指数
1
解决办法
7万
查看次数

Typescript - 扩展错误类

我试图抛出一个自定义错误,我的"CustomError"类名称打印在控制台而不是"错误",但没有成功:

class CustomError extends Error { 
    constructor(message: string) {
      super(`Lorem "${message}" ipsum dolor.`);
      this.name = 'CustomError';
    }
}
throw new CustomError('foo'); 
Run Code Online (Sandbox Code Playgroud)

输出是Uncaught Error: Lorem "foo" ipsum dolor.

我的期望:Uncaught CustomError: Lorem "foo" ipsum dolor.

我想知道是否只能使用TS来完成(没有搞乱JS原型)?

javascript typescript

57
推荐指数
6
解决办法
3万
查看次数

继承自Error对象 - message属性在哪里?

我在Javascript中定义自定义错误对象时发现了一个奇怪的行为:

function MyError(msg) {
    Error.call(this, msg);
    this.name = "MyError";
}
MyError.prototype.__proto__ = Error.prototype;

var error = new Error("message");
error.message; // "message"

var myError = new MyError("message");
myError instanceof Error; // true
myError.message; // "" !
Run Code Online (Sandbox Code Playgroud)

为什么new Error("message")设置message属性,而Error.call(this, msg);不是?当然,我可以this.message = msgMyError构造函数中定义,但我不太明白为什么它还没有设置在第一位.

javascript

32
推荐指数
3
解决办法
2万
查看次数

为什么Mocha/Chai不像常规自定义错误那样处理babel自定义错误?

这适用于摩卡/柴:

describe('Chai throw() with old-style custom errors', ()=> {

  // old way
  function ES5Error(message = 'todo', value) {
    this.name = 'ES5Error';
    this.message = message;
  }
  ES5Error.prototype = new Error();

  it('catches ES5Errors', ()=> {
    var err = new ES5Error('This is a bad function.');
    var fn = function () { throw err; }
    expect(fn).to.throw(ES5Error);
    expect(fn).to.throw(Error);
    expect(fn).to.throw(/bad function/);
    expect(fn).to.not.throw('good function');
    expect(fn).to.throw(ES5Error, /bad function/);
    expect(fn).to.throw(err);
  });
});
Run Code Online (Sandbox Code Playgroud)

虽然基于类的方法不:

describe('Chai throw() with new-style custom errors', ()=> {
  // New way
  class ExtendError extends Error { …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js chai ecmascript-6 babeljs

3
推荐指数
1
解决办法
253
查看次数