What happens when an error occurs that is being handled by the question mark (?) operator?
An exception is raised. The effect(s) of the exception are defined by the error! macro.
Rust attempts to convert the error to the local function's error type and return it as Result::Err. If that fails, the program panics.
The program panics immediately.
The error is reported and execution continues.