如何处理 UnhandledPromiseRejectionWarning
How to handle UnhandledPromiseRejectionWarning
连接后,这段代码会做一些事情
controller.connect((response)=>{ does some stuff })
在连接方法的深处调用了这个异步函数,return通过回调
承诺
async function ServerSend(endpoint,params,callback) {
const response = axios.get(host+endpoint, {params})
callback(response);
}
如果服务器不可用,它会正确抛出:UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:8088
处理这个异常的正确方法是什么?我可以在异步方法中添加一个 catch 并将所有回调重写为 return 一个错误。但我宁愿在来电者那里抓住它。我无法使用任何一种方法。
axios.get(host+endpoint, {params}) // this is a promise
所以如果它解决了就没问题,但如果它拒绝(并且你没有任何 try..catch,任何附加的 .catch - 它会抛出异常未处理的错误。
为什么方法是:
async function ServerSend(endpoint,params,callback) {
try {
const response = await axios.get(host+endpoint, {params})
callback(null, response);
} catch (err) {
callback(err, null);
}
}
或
function ServerSend(endpoint,params,callback) {
// most callbacks are two parameters - 1st erro or null, second data if no error is present.
axios.get(host+endpoint, {params}).then(data => callback(null, data)).catch(err => callback(err, null));
}
连接后,这段代码会做一些事情
controller.connect((response)=>{ does some stuff })
在连接方法的深处调用了这个异步函数,return通过回调
承诺async function ServerSend(endpoint,params,callback) {
const response = axios.get(host+endpoint, {params})
callback(response);
}
如果服务器不可用,它会正确抛出:UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:8088
处理这个异常的正确方法是什么?我可以在异步方法中添加一个 catch 并将所有回调重写为 return 一个错误。但我宁愿在来电者那里抓住它。我无法使用任何一种方法。
axios.get(host+endpoint, {params}) // this is a promise
所以如果它解决了就没问题,但如果它拒绝(并且你没有任何 try..catch,任何附加的 .catch - 它会抛出异常未处理的错误。
为什么方法是:
async function ServerSend(endpoint,params,callback) {
try {
const response = await axios.get(host+endpoint, {params})
callback(null, response);
} catch (err) {
callback(err, null);
}
}
或
function ServerSend(endpoint,params,callback) {
// most callbacks are two parameters - 1st erro or null, second data if no error is present.
axios.get(host+endpoint, {params}).then(data => callback(null, data)).catch(err => callback(err, null));
}