| PackageDescription | Exception::Class::TryCatch provides syntactic sugar for use with
Exception::Class using the familiar keywords 'try' and 'catch'. Its primary
objective is to allow users to avoid dealing directly with '$@' by ensuring
that any exceptions caught in an 'eval' are captured as Exception::Class
objects, whether they were thrown objects to begin with or whether the
error resulted from 'die'. This means that users may immediately use 'isa'
and various Exception::Class methods to process the exception.
In addition, this module provides for a method to push errors onto a hidden
error stack immediately after an 'eval' so that cleanup code or other error
handling may also call 'eval' without the original error in '$@' being
lost.
Inspiration for this module is due in part to Dave Rolsky's article
"Exception Handling in Perl With Exception::Class" in _The Perl Journal_
(Rolsky 2004).
The 'try/catch' syntax used in this module does not use code reference
prototypes the way the Error.pm module does, but simply provides some
helpful functionality when used in combination with 'eval'. As a result, it
avoids the complexity and dangers involving nested closures and memory
leaks inherent in Error.pm (Perrin 2003).
Rolsky (2004) notes that these memory leaks may not occur in recent
versions of Perl, but the approach used in Exception::Class::TryCatch
should be safe for all versions of Perl as it leaves all code execution to
the 'eval' in the current scope, avoiding closures altogether. |