Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Using Tiny::try with exception class

by perlbaski (Sexton)
on Oct 10, 2012 at 00:36 UTC ( #998104=perlquestion: print w/ replies, xml ) Need Help??
perlbaski has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks,

I am trying to use try catch from Try::Tiny module to catch and exception class object.

use Try::Tiny; use Exception::Class ( 'MyException', 'Commands' => { isa => 'MyException' }, 'Timeout' => { isa => 'Commands', description => 'These exceptions are resulted from running t +he naviseccli commands' } ); try{ MyException->throw( error => 'I feel funny. custom string based on +error' ) ; } catch{ my $e=$_; if ( $e == Exception::Class->caught('MyException') ) { warn $e->error, "\n", $e->trace->as_string, "\n"; warn join ' ', $e->euid, $e->egid, $e->uid, $e->gid, $e->pid, $e +->time; #exit; } };

I see that try did not throw the error. Any ideas why?. Try::Tiny documentation says that $_ should contain the error. Is try of Try::Tiny module capable of throwing exception class object and can it be stored in $_?

I do not want to use die in the try block because I do not want the program to exit but retry after some time or for some exceptions just ignore them after printing a log message.

Thanks in advance!

Comment on Using Tiny::try with exception class
Download Code
Re: Using Tiny::try with exception class
by mbethke (Hermit) on Oct 10, 2012 at 01:33 UTC

    The problem is that Exception::Class->caught() explicitly checks $@ for the exception object. The method doesn't do much anyway though, so with Try::Tiny you can simplify this to:

    ... catch { if(UNIVERSAL::isa($_,'MyException')) { warn $e->error, "\n"; ... } }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://998104]
Approved by chacham
Front-paged by Tanktalus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (9)
As of 2015-07-07 11:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls