Resumen

En la lógica de un contrato inteligente pueden ocurrir errores que debemos controlar y actuar en consecuencia ante estos escenarios.

Manejo de errores en Solidity

Solidity permite la declaración de Errores cuya función es similar a la de los eventos, con la diferencia de que estos pueden revertir los cambios de estado hechos. Sin embargo, el gas usado no es devuelto a quien generó la transacción.

La declaración de errores permite dar información más detallada sobre el error que acaba de ocurrir y generar una notificación, similar que los eventos. Los cambios previos en la transacción se revierten, por lo que no debes preocuparte si cambiaste el valor de alguna variable previamente.

// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

contract Event {

    error SendError(string message);

    function doSomething() public {
        revert SendError("Mensaje del error");
    }
}

La declaración de los errores personalizables se realiza con la palabra clave error y recibe todos los parámetros que el mismo pueda necesitar. Su posterior lanzamiento se realiza con revert e invocando el error a través de su nombre.

image.png

Si lanzas un error desde Remix, verás la X roja y la información respectiva al error que acaba de ocurrir.

Combina esa característica de Solidity para desarrollar flujos en el código que te permitan controlar todos los escenarios posibles y actuar en consecuencia. Informarle a los usuarios del proyecto qué está ocurriendo en el contrato te ayudará a mejorar su experiencia de usuario interactuando con una aplicación.


Contribución creada por: Luis Enrique Herrera y Kevin Fiorentino (Platzi Contributors).