In the exceptions hierarchy, the descendants of
RuntimeException and those of Error are runtime exceptions/errors.
The difference between the two is: Those under RuntimeException are
the ones caused by poor programming/design, and those of Error are
the ones that can't/shouldn't be controlled by the developer.
For coding an exception within the application,
for instance, to throw an exception when something in the business logic occurs,
the RuntimeException is extended.
The question is, what exactly is the difference between extending
RuntimeException and extending Error-- except that extending
Error is bad practice?