通用抛出给期望的对象抛出的皮棉错误

Mun*_*abu 7 javascript throw ecmascript-6 polymer eslint

下面的抛出代码给出了lint错误预期对象将被丢弃

throw { code : 403, message : myMessage };
Run Code Online (Sandbox Code Playgroud)

如果我尝试抛出新的Error,我不会被拖延,但会在响应中显示[Object Object]。

throw new Error({ code : 403, message : myMessage });
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何解决“ 预期对象抛出错误”吗?不删除eslint配置/规则

Jon*_*lms 15

 throw Object.assign(
   new Error(myMessage),
   { code: 402 }
);
Run Code Online (Sandbox Code Playgroud)

引发常规错误,并使用自定义字段对其进行扩展。


您还可以为此编写可重用的错误类:

  class CodeError extends Error {
   constructor(message, code) {
    super(message);
    this.code = code;
   }
 }

 throw new CodeError(myMessage, 404);
Run Code Online (Sandbox Code Playgroud)

这样,您可以在捕获时轻松区分错误:

  } catch(error) {
    if(error instanceof CodeError) {
      console.log(error.code);
    } else {
      //...
    }
 }
Run Code Online (Sandbox Code Playgroud)


Mun*_*abu 5

另一个简单的解决方法是在变量和抛出上存储错误。

let errorMessage =  { code : 403, message : myMessage };
throw errorMessage;
Run Code Online (Sandbox Code Playgroud)

  • Webstorm 不喜欢这样:局部变量 'errorMessage' 是多余的。 (3认同)