We're trying to figure out whether to use
throw in Solidity when a condition fails and we don't assume user maliciousness. Here's the pros and cons we've figured so far:
- Any side effects of the code are reverted
- Some wallets may predict
throwahead of time, warning the user
- Less gas is consumed by the unsuspecting user (again, assuming not a malicious call).
- A calling contract may gracefully recover from the failure, unlike with
Are there any other considerations (or best-practices) we should be aware of?