A√ļn no tienes acceso a esta clase

Crea una cuenta y contin√ļa viendo este curso

Curso de Introducción a Solidity

Curso de Introducción a Solidity

Sebasti√°n Leonardo Perez

Sebasti√°n Leonardo Perez

Manejo de errores

11/21
Recursos

Aportes 4

Preguntas 8

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi√≥n.

Manejo de errores

  • assert: Se utiliza para pruebas, compara dos valores
  • revert: Es un error que regresa todas las modificaciones de estado realizadas durante la ejecuci√≥n de la funci√≥n. Recibe por par√°metro un mensaje de error
  • require: Es una variaci√≥n del revert que recibe por par√°metro una expresi√≥n booleana y revierte si esta expresi√≥n es falsa.

Cabe destacar que cualquier consumo de gas ejecutado hasta el momento de un revert se debe pagar, porque el cómputo fué utilizado

Modificadores

Usando un if

modifier IsOwner() {
    if (msg.sender != owner) revert();
    _;
}

Usando require()

modifier IsOwner() {
    require(msg.sender == owner, "El usuario no es el creador del contrato");
    _;
}

En este blog explica con ejemplos y descripciones el uso para cada uno de estos tipos de manejo de errores. Aqui una pequena parte traducida:

Utilice require ():

  • Validar las entradas del usuario, es decir. require (entrada <20);
  • Validar la respuesta de un contrato externo, es decir. require (external.send (cantidad));
  • Validar las condiciones estatales antes de la ejecuci√≥n, es decir. require (block.number> SOME_BLOCK_NUMBER) o require (balance [msg.sender]> = amount)
  • Generalmente, debe usar require con mayor frecuencia
  • Generalmente, se utilizar√° hacia** el comienzo** de una funci√≥n.

Utilice revert ()

  • Maneja el mismo tipo de situaciones que require (), pero con una l√≥gica m√°s compleja.
  • Si tiene alg√ļn flujo l√≥gico anidado complejo if / else, puede encontrar que tiene sentido usar revert () en lugar de require ().

Utilice assert ()

  • Compruebe si hay desbordamiento / subdesbordamiento, es decir.c = a + b; assert(c> b)
  • Compruebe invariantes, es decir. assert (este.balance> = totalSupply);
  • Validar el estado despu√©s de realizar cambios
  • Prevenir condiciones que nunca deber√≠an ser posibles.
  • Por lo general, probablemente usar√°assert con menos frecuencia.
  • Generalmente, se utilizar√° hacia el final de una funci√≥n.

Este curso est√° bien estructurado, felicitaciones.