Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Exception handling for Image::Magick

by simonm (Vicar)
on Sep 06, 2004 at 00:42 UTC ( [id://388689]=note: print w/replies, xml ) Need Help??


in reply to Exception handling for Image::Magick

I think that you can take advantage of the fact that the error messages all look like "Error 300: Couldn't foo the bar." The code below should work unless the string returned by GetAttribute happens to be formatted to look like an error message.
use Exception::Class ( 'Image::Magick::Exception' => { fields => [ 'type', 'errno', 'msg' ] + } ); ... my $result = &{"hidden::$cmethod"}; if( "$result" =~ /^(\w+)\s(\d\d\d):\s(.*)/ ) { Image::Magick::Exception->throw( error => "$result", type => $1, errno => $2, msg => $3 ); }; return $result

More generally, it looks like the really proper fix to this would involve twiddling the glue code in Magick.xs. I took a look at the code and I think a global flag could be added that changed the behavior of MagickErrorHandler and MagickWarningHandler, equivalent to DBI's RaiseError flag, but I don't have enough XS experience to know the right way to implement this.

Replies are listed 'Best First'.
Re^2: Exception handling for Image::Magick
by redlemon (Hermit) on Sep 06, 2004 at 07:18 UTC

    Brilliantly simple!! If it looks like a duck and quacks like a duck, it probably is a duck.

    Cheers,

    --
    Lyon

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://388689]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (2)
As of 2024-04-26 04:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found