Different runtime failures can use different numeric categories.
LET’S PICTURE IT
A fault catalog distinguishes a broken calculation from an invalid table position.
SEE IT FOR YOURSELF
Follow a revert and decode its error dataStep 1 / 4
This fictional call requests a transfer of one hundred raw units while the relevant balance is forty.
This fictional call requests a transfer of one hundred raw units while the relevant balance is forty.The contract rejects this request. State changes in the reverted call are rolled back, while work already consumed can still cost gas.A common Error(string) begins with selector 08c379a0. This example then encodes the message Not enough tokens.A decoder can recognize the supplied error shape. Identifying the true cause and source still needs the call context, code and state.
Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.
Read the hexadecimal notation
Panic code 0x11 identifies checked arithmetic overflow or underflow. The 0x prefix matters: this value is decimal seventeen, not decimal eleven.
Distinguish division by zero
Division or modulo by zero uses code 0x12. An unchecked arithmetic block does not make division by zero a valid successful calculation.
Avoid overclaiming the exact operation
Code 0x11 alone does not tell you which addition, subtraction or multiplication caused the failure. Find the relevant executed operation in its call context.
Test boundaries deliberately
A local test can exercise maximum integers, zero divisors and values just inside a valid range. Use the chosen compiler and execution settings when reproducing behavior.
Inspect the example
Panic(uint256)
0x11: checked arithmetic overflow / underflow
0x12: division or modulo by zero
These are selected categories, not the complete panic table.
Check the complete documented panic list when a different code appears.