Javascript 使用promises体系结构处理服务器和api错误

Javascript 使用promises体系结构处理服务器和api错误,javascript,reactjs,promise,Javascript,Reactjs,Promise,免责声明:这不是关于解决bug,而是一个与架构相关的问题 我正在为React/Redux应用程序设置API。它使用fetch,在伪代码格式中看起来也是这样 //API function get(url){ //..fetch code if(!response.ok){ throw new Error("Server error"); } //..looking into the received json data if(data[

免责声明:这不是关于解决bug,而是一个与架构相关的问题

我正在为React/Redux应用程序设置API。它使用fetch,在伪代码格式中看起来也是这样

//API

function get(url){

    //..fetch code
    if(!response.ok){
        throw new Error("Server error");
    }

    //..looking into the received json data
    if(data["api_error"]){
        throw new Error("API Error");
    }

}

//CALLING CODE

API.get()
.then( (res) => {
    //data here is fine
})
.catch( (err) => {
   //any error caught here
})
问题:

所有错误都将在catch中处理。这只是因为我决定将API错误作为错误抛出,而不是将数据作为已解决的承诺与某些数据一起传递

我不确定这是不是一个好办法。原因是,我希望
API错误
附带一些额外的信息,比如一些解释API错误的数据,这样我就可以向用户弹出一个窗口。错误可以携带更多的数据吗?简单地将一些额外的数据附加到错误实例对象是有意义的还是太粗糙了

另一种方法是解决API错误,而不是像一切顺利一样抛出它们,并使用hasError属性向下传递一个自定义对象。我不喜欢这种方法,但它并没有错,它只是一种不同的方法


您将如何处理此问题?

.details
等附加到
错误
实例是一种标准做法。实际上,此问题并非特定于承诺。在抛出异常的同步函数中也是如此。当然,我想我只是想在标题中更具体一些,这样那些不太了解承诺的人就不会浪费时间(因为他们首先可能在阅读代码时遇到困难)