Minimal try/catch with proper localization of eval
This module provides bare bones try/catch statements that are designed to
minimize common mistakes with eval blocks, and NOTHING else.
This is unlike TryCatch which provides a nice syntax and avoids adding another
call stack layer, and supports calling return from the try block to return from
the parent subroutine. These extra features come at a cost of a few
dependencies, namely Devel::Declare and Scope::Upper which are occasionally
problematic, and the additional catch filtering uses Moose type constraints
which may not be desirable either.
The main focus of this module is to provide simple and reliable error handling
for those having a hard time installing TryCatch, but who still want to write
correct eval blocks without 5 lines of boilerplate each time.
It's designed to work as correctly as possible in light of the various
pathological edge cases (see BACKGROUND) and to be compatible with any style of
error values (simple strings, references, objects, overloaded objects, etc).