我正在尝试正确管理代码中的错误,但收到警告,例如我没有处理被拒绝的承诺,如下所示:
UnhandledPromiseRejectionWarning: Error: Request failed with status code 401
at createError (/Users/a/Documents/export/node_modules/axios/lib/core/createError.js:16:15)
at settle (/Users/a/Documents/export/node_modules/axios/lib/core/settle.js:18:12)
at IncomingMessage.handleStreamEnd (/Users/a/Documents/export/node_modules/axios/lib/adapters/http.js:201:11)
at IncomingMessage.emit (events.js:187:15)
at endReadableNT (_stream_readable.js:1092:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
这是我的代码:
const axios = require('axios');
axios.get('API_REQUEST', {
'auth': {
'bearer': 'NOT_WORKING_TOKEN' // To force the API to return an error ;)
}
}).catch((error)=>{
throw error;
})
现在我只想让我的程序在抛出错误时崩溃而没有警告。
答案 0 :(得分:2)
catch
块通常用于从错误中恢复。抛出的任何错误且未在诺言链中捕获(在then
,catch
等内部)都将导致UnhandledPromiseRejection
。
如果您确定此请求失败不会将任何未定义状态引入您的应用程序,则可以记录该错误而不抛出。
.catch(err => logger.error(err)) // or console.error()
如果您坚持让未处理的拒绝崩溃,您可以将以下代码放在应用程序入口点附近(例如 index.js )
>process.on('unhandledRejection', reason => {
throw reason;
});
还请注意,默认情况下,Node的未来版本应在未处理的承诺拒绝时崩溃。