En Ucrania, tenemos API de impuestos. A veces puede estar inactivo, por lo que puede ser un error de conexión. Y necesito atraparlo porque mi aplicación deja de funcionar. Lo he intentado mucho, pero no funciona.
import * as url from "url"; import * as http from "http"; 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); } }También probé esto:
process.on('uncaughtException', (err) => { console.log(err); })Pero simplemente se detiene. la función de consulta simplemente no detecta errores. Solo procesar. al detectar el error, pero aún así se detiene. Traté de gustar eso:
process.on('uncaughtException', (err) => { console.log(err); startAsyncTasksFunction() // this is my main function }) Entonces, cuando hay una excepción no uncaughtException , solo comienzo la función principal. La aplicación no se detiene y tengo 2 startAsyncTasksFunction iniciadas y eso está causando aún más problemas. Entonces, ¿cómo puedo atraparlo en la función de query ? Necesito esto para hacer algunas manipulaciones cuando el impuesto no responde. Y detecte el error en la función de consulta, no globalmente.