Estoy usando npm yahoo-finance para obtener datos de stock. Cuando ingreso un símbolo de cotización que no existe, me gustaría detectar el error.
const yahooFinance = require('yahoo-finance'); async function stockData() { try { let data = await yahooFinance.historical({symbol: "SIJGAOWSFA", from: 2020-08-23, to: 2021-08-23}); } catch (error) { console.error(error) } } stockData(); Sin embargo, no parece ser un error de recuperación típico. No es ser atrapado en absoluto. Con eso quiero decir que el error que ve a continuación no se registró en la consola a través de console.error(error) . Más bien, algo fuera del alcance de este archivo está registrando el error. Cuando ocurre el error, no se ejecuta nada en catch.
Planeo usar esto en un bucle for, por lo que me gustaría detectar el error para poder evitar ejecutar las siguientes funciones.
Un colaborador dice que:
¿Es esto de un proyecto existente que funcionaba y dejó de funcionar, o de un nuevo proyecto?
Si es lo primero, todo sigue funcionando bien de mi lado. (Muy) ocasionalmente hay problemas en yahoo que se atascan en su caché, posiblemente también relacionados con el DNS. Sugeriría borrar su caché de DNS y también intentar consultar diferentes datos para ver si eso funciona.
Si es el último (nuevo proyecto), podrían ser los datos que está consultando. Intente consultar diferentes datos y vea si funciona. Por lo general, Yahoo arroja un error específico si algo anda mal, pero podría ser esto.
Si ninguno de esos enfoques funciona, pero aún necesita detectar este tipo de error, dado el código fuente , lo que hace es:
if (!crumb) { console.warn('root.Api.main context.dispatcher.stores.CrumbStore.crumb ' + 'structure no longer exists, please open an issue.');Y luego continúa normalmente (sin lanzar), y finalmente devuelve una matriz vacía.
Si está seguro de que el resultado debe contener al menos un elemento, puede comprobar si está vacío y entrar en un estado de error si lo está.
De lo contrario, si no sabe si la matriz debe contener valores o no, otra opción es sobrescribir console.warn para que pueda detectar cuándo se le pasa esa cadena exacta.
Otra opción sería bifurcar la biblioteca para que (correctamente) arroje un error cuando no se encuentre, en lugar de continuar y devolver una matriz vacía, lo que hace que un resultado exitoso vacío sea indistinguible de un resultado vacío erróneo. Cambiar el
if (!crumb) { console.warn('root.Api.main context.dispatcher.stores.CrumbStore.crumb ' + 'structure no longer exists, please open an issue.');a
if (!crumb) { throw new Error('root.Api.main context.dispatcher.stores.CrumbStore.crumb ' + 'structure no longer exists, please open an issue.'); y luego podrá capturarlo en su llamada a .historical .