If execution reaches a catch-block, then the state-changing effects of the external call have been reverted.
If execution reaches the success block, the effects were not reverted.
If the effects have been reverted, then execution either continues in a catch block or the execution of the try/catch statement itself reverts (for example due to decoding failures as noted above or due to not providing a low-level catch clause).
- Success Block vs. Error Block
- try/Success Block X -> Revert
- External Call -> State Change
- catch/Error Block -> Revert
- External Call X -> State Change
- try/catchtry/catch Revert -> Decoding/Low-Level