В Украине у нас есть API налоговой. Иногда сервер ложится, так что это socket hang up - это нормально. И мне нужно обработать эту ошибку, потому что моя программа останавливается. Я пробовал несколько вариантов, но ничего не работает.
export function query(method, toUrl, headers, payload, cb) {
try {
let parsed = url.parse(toUrl);
let req = http.request({
host: parsed.host,
path: parsed.path,
headers: headers,
method: method,
}, res => {
let chunks = [];
res.on("data", chunk => {
chunks.push(chunk);
});
res.on("end", () => {
cb(Buffer.concat(chunks));
});
res.on("error", () => {
console.log("SOCKET ERR!!!");
req.end();
cb(null);
});
});
req.on("error", e => {
console.log("SOCKET ERR!!!");
req.end();
cb(null);
});
req.write(payload);
req.end();
}
catch(e) {
console.log("Error in query function: " + e.message);
}
}
Попробовал еще так:
process.on('uncaughtException', (err) => {
console.log(err);
})
Но программа выкидывает ошибку и просто останавливается. функция
query
просто не ловит ошибки. Только
process.on
ловит ошибку, но все равно останавливается.
Еще пробовал так:
process.on('uncaughtException', (err) => {
console.log(err);
startAsyncTasksFunction() // this is my main function
})
То есть когда выкидывает
uncaughtException
, я просто запускаю основную функцию программы. Приложение не останавливается, и у меня запущено 2
startAsyncTasksFunction
, что вызывает еще больше проблем.