Thread

Posted on Wed Mar 22 01:11:48 2006 by cowanbill
Dynamic way to get specific exception name from object?
When catching an exception, the catch may be either the exception identified in the 'caught' method or a subclass. I would like to have a dynamic mechanism to get the actual class name for the exception object (e.g. "MyException::File::Open" subclass or "MyException::File"?). This would be useful in building diagnostic info to log or present to developer.

Suggestions for how to do this? Hopefully without hardcoding?

There are a several class and object methods described in the doc for Exception::Class. Available object method I missed?
Direct Responses: 2002 | Write a response
Posted on Wed Mar 22 02:59:37 2006 by jdhedden in response to 2001
Re: Dynamic way to get specific exception name from object?
You can use the 'caught' method with your base class (which defaults to Exception::Class::Base), and then use 'ref' on the caught exception.
eval { ... }; if (my $e = Exception::Class::Base->caught()) { print(STDERR "Caught an exception of type ", ref($e), "\n"); }
Direct Responses: 2004 | Write a response
Posted on Wed Mar 22 07:31:17 2006 by cowanbill in response to 2002
Re: Dynamic way to get specific exception name from object?
Thanks for your quick response! After reading your suggestion to use 'ref' function, I thought "so obvious". I was doing too much exception thinking and did not see the simple answer.
Write a response