Error
The abstract base type for all errors. All error types in std inherit
from Error, so it can be used as a catch-all in typed catch handlers.
Error is abstract: it has no representation of its own, so it can't be
constructed. A class can inherit from it directly, but has no constructor to
chain to and must define its own (str). Such a class is not a
RuntimeError, so catch RuntimeError doesn't handle
it; subclass RuntimeError or one of its subtypes for ordinary errors.