Recibo varios errores, está bien, cuando el usuario rechaza, cuando la transacción fue mala, etc.
pero ahora quiero mostrar diferentes mensajes por su error de código
en mi servicio de mi proyecto estoy recibiendo este error
{code: 4001, message: 'MetaMask Tx Signature: User denied transaction', stack: '{\n "code": 4001,\n "message": "MetaMask Tx'}este es mi codigo
function getInformation=()=>{ try{ ... } catch (err) { error = err console.log('error', error) // error is the up message throw new Error(error) } }entonces estoy usando la función getInformation así:
try{ ... const info= getInformation() } catch (error) { console.log('EERROR', error,error.code)aquí veo el error como cadena
EERROR Error: [object Object] at _callee$ (PWDService.js?9579:13) at tryCatch (runtime.js?96cf:62) at Generator.invoke [as _invoke] (runtime.js?96cf:296), undefined y error.code no está definido, ¿por qué obtengo una cadena y error.code no está definido?
obviamente error.code no está definido porque el error es una cadena
El primer parámetro del constructor Error espera un mensaje legible por humanos, es decir, una cadena . Esto significa que el objeto que está pasando a new Error está siendo editado con ToString , lo que resulta en "[object Object] ..." como mensaje
Si está satisfecho con el error que se produjo en la captura inicial, simplemente vuelva a lanzar
try { // ... } catch (err) { console.log('error', err); throw err; } Si desea crear un nuevo error personalizado, deberá crearlo modificando el new Error o creando su propia clase de Error , es decir
try { // ... } catch (err) { console.log('error', err); const error = new Error(err.message); error.code = err.code; // other stuff throw error; }o
class MMError extends Error { constructor(message, code) { super(message); this.code = code; // other stuff } } // ... try { // ... } catch (err) { console.log('error', err); const error = new MMError(err.message, err.code); throw error; }@react1 siempre puede reconstruir el error y ver todas sus propiedades haciendo algo similar a lo siguiente,
try { // ... } catch (err) { let errObject = Object.assign({}, err) // console.log(errObject) to see what's there and what you can use }