我正在使用node-instagram api(javascript)。有时,每当我使用api发出get请求时,都会出错。我想在引发ECONNRESET
异常时显示特定的错误消息,然后为所有其他类型的异常显示一般错误消息。到目前为止,我的代码如下:
instagram.get('users/self/media/recent').then(data => {
console.log(data)
}).catch(err => {
console.log(err)
});
如何更改承诺以使其也识别ECONNRESET
异常并在捕获异常时显示不同的错误消息?
答案 0 :(得分:1)
我会在您的catch块中执行Object.keys(err)
,以查看错误对象提供的键。这些键之一应该具有带有详细信息的值,以标识错误的类型。
例如:
console.log(Object.keys(err)) ----> ['type','status','description']
if(err.type === 'ECONNRESET' && err.status === {code identifying it}){
// do something
}
答案 1 :(得分:1)
如果您在console.log(err)
上放置一个断点,然后在碰到断点时检查err
对象,那么您应该能够知道err
对象上的哪个属性告诉您它是ECONNRESET
。 Trincot says it's code
。然后只需使用if
:
instagram.get('users/self/media/recent').then(data => {
console.log(data)
}).catch(err => {
if (err.code === "ECONNRESET") {
throw new Error("Specific error message");
} else {
throw new Error("Generic error message");
}
});
在该代码中,我重新抛出错误,因此承诺被拒绝,假设您要将此链的结果返回到将利用其拒绝原因的某种东西。如果您只是在该catch
处理程序中执行消息,则:
instagram.get('users/self/media/recent').then(data => {
console.log(data)
}).catch(err => {
if (err.code === "ECONNRESET") {
// Show the specific error message
} else {
// Show the generic error message
}
});