代码之家  ›  专栏  ›  技术社区  ›  Munna Babu

一般的throw给出了一个需要抛出lint错误的对象

  •  3
  • Munna Babu  · 技术社区  · 6 年前

    下面的抛出代码给出了lint错误 应为要引发的对象,而不是引发文本

    throw { code : 403, message : myMessage };
    

    如果我尝试 引发新错误 ,我没有得到eslint,但它在响应中给出了[对象对象对象]。

    throw new Error({ code : 403, message : myMessage });
    

    有人能告诉我怎么修吗 应引发一个对象 错误?不删除eslint配置/规则

    2 回复  |  直到 5 年前
        1
  •  7
  •   Jonas Wilms    6 年前
     throw Object.assign(
       new Error(myMessage),
       { code: 402 }
    );
    

    抛出一个常规错误并用自定义字段扩展它。


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

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

    这样,您可以很容易地识别错误:

      } catch(error) {
        if(error instanceof CodeError) {
          console.log(error.code);
        } else {
          //...
        }
     }
    
        2
  •  2
  •   Munna Babu    5 年前

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

    let errorMessage =  { code : 403, message : myMessage };
    throw errorMessage;