Skip to content

Commit

Permalink
Merge pull request #2631 from maurelian/maurelian_patch1
Browse files Browse the repository at this point in the history
Clarify require and assert usage
  • Loading branch information
pirapira authored Jul 26, 2017
2 parents 43002b7 + 9c676e7 commit 092c281
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions docs/control-structures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -381,13 +381,11 @@ Error handling: Assert, Require, Revert and Exceptions
Solidity uses state-reverting exceptions to handle errors. Such an exception will undo all changes made to the
state in the current call (and all its sub-calls) and also flag an error to the caller.
The convenience functions ``assert`` and ``require`` can be used to check for conditions and throw an exception
if the condition is not met. The difference between the two is that ``assert`` should only be used for internal errors
and ``require`` should be used to check external conditions (invalid inputs or errors in external components).
The idea behind that is that analysis tools can check your contract and try to come up with situations and
series of function calls that will reach a failing assertion. If this is possible, this means there is a bug
in your contract you should fix.
if the condition is not met. The ``assert`` function should only be used to test for internal errors, and to check invariants.
The ``require`` function should be used to ensure valid conditions, such as inputs, or contract state variables are met, or to validate return values from calls to external contracts.
If used properly, analysis tools can evaluate your contract to identify the conditions and function calls which will reach a failing ``assert``. Properly functioning code should never it is reach a failing assert statement, if this happens there is a bug in your contract which you should fix.

There are two other ways to trigger execptions: The ``revert`` function can be used to flag an error and
There are two other ways to trigger exceptions: The ``revert`` function can be used to flag an error and
revert the current call. In the future it might be possible to also include details about the error
in a call to ``revert``. The ``throw`` keyword can also be used as an alternative to ``revert()``.

Expand Down

0 comments on commit 092c281

Please sign in to comment.