Curriculum Errors Panics vs errors exercise 2 · mcq
Panics vs errors
Now flip the scenario: the function maintains an INVARIANT
the caller can't violate (it was a digit moments ago; the
caller already validated). The else branch is "this can't
happen" — a programmer bug if reached. Pick the right shape.
About this theme
Errors are for conditions the caller should be expected to handle (bad input, out of memory, missing file). Panics are for conditions that indicate a programmer bug — invariants that must hold but didn't. @panic(msg) aborts the program with a message; unreachable is a no-message hint to the compiler that a code path can't be entered (in debug builds, hitting one panics with reached unreachable; in release builds it's UB). The discipline: errors for expected failures, panics for impossible-by-design conditions.