Error handling and assertions

In Algorand Python, error handling and assertions play a crucial role in ensuring the correctness and robustness of smart contracts.

Assertions

Assertions allow you to immediately fail a smart contract if a Boolean statement or value evaluates to False. If an assertion fails, it immediately stops the execution of the contract and marks the call as a failure.

In Algorand Python, you can use the Python built-in assert statement to make assertions in your code.

For example:

@subroutine
def set_value(value: UInt64):
    assert value > 4, "Value must be > 4"

Assertion error handling

The (optional) string value provided with an assertion, if provided, will be added as a TEAL comment on the end of the assertion line. This works in concert with default AlgoKit Utils app client behaviour to show a TEAL stack trace of an error and thus show the error message to the caller (when source maps have been loaded).

Explicit failure

For scenarios where you need to fail a contract explicitly, you can use the op.err() operation. This operation causes the TEAL program to immediately and unconditionally fail.

Alternatively op.exit(0) will achieve the same result. A non-zero value will do the opposite and immediately succeed.

Exception handling

The AVM doesn’t provide error trapping semantics so it’s not possible to implement raise and catch.

For more details see Unsupported Python features.