[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Error handling in Ruby scripts

Peter Bailey

2/12/2009 7:39:00 PM

Hi,
Can someone please help me with exception handling? I've written some
classes and scripts that I've used for a year or two. But now, I'm
having to use them with many thousands of files at once, and, even
though they process just one file at a time, there are sometimes errors
in the tools that I use. Specifically, I use an image processing tool
called Image Alchemy. In my Ruby scripts, I have a class written that
has in it various conversion routines where it converts the file pointed
to in Ruby to various formats--TIFF, PNG, etc., etc. My problem is that
when I'm presented with many thousands of files, I'm getting the odd
input file that's just bad. So, my Alchemy Ruby code fails, because
Alchemy itself is failing with that bad file. So, I've read a bit about
"raise," but, I can't seem to get it to work. Can I use "raise" as an
exception handler in my class? Then, in my scripts, could I use
"begin/rescue" with that exception?

Below is a subset of my class

Thanks,
Peter

class Alchemy
def initialize(file)
@file = file
end
def Alchemy.tiff(file)
`alchemy #{file} -t1 -Zc1 -Zm2 -Za4 -Zd 300 300 .300 -o`
end
def Alchemy.tiffbw(file)
`alchemy #{file} -t204 -Zc1 -Zm2 -Za4 -Zd 600 600 .300 -o`
end
def Alchemy.tiffgray(file)
`alchemy #{file} -t1 -Zc1 -Zm2 -b -c256 -8 -Za4 -Zd 300 300 .300 -o`
end
end
--
Posted via http://www.ruby-....

4 Answers

snex

2/12/2009 8:48:00 PM

0

On Feb 12, 1:38 pm, Peter Bailey <pbai...@bna.com> wrote:
> Hi,
> Can someone please help me with exception handling? I've written some
> classes and scripts that I've used for a year or two. But now, I'm
> having to use them with many thousands of files at once, and, even
> though they process just one file at a time, there are sometimes errors
> in the tools that I use. Specifically, I use an image processing tool
> called Image Alchemy. In my Ruby scripts, I have a class written that
> has in it various conversion routines where it converts the file pointed
> to in Ruby to various formats--TIFF, PNG, etc., etc. My problem is that
> when I'm presented with many thousands of files, I'm getting the odd
> input file that's just bad. So, my Alchemy Ruby code fails, because
> Alchemy itself is failing with that bad file. So, I've read a bit about
> "raise," but, I can't seem to get it to work. Can I use "raise" as an
> exception handler in my class? Then, in my scripts, could I use
> "begin/rescue" with that exception?
>
> Below is a subset of my class
>
> Thanks,
> Peter
>
> class Alchemy
>   def initialize(file)
>    @file = file
>   end
>   def Alchemy.tiff(file)
>    `alchemy #{file} -t1 -Zc1 -Zm2 -Za4 -Zd 300 300 .300 -o`
>   end
>   def Alchemy.tiffbw(file)
>     `alchemy #{file} -t204 -Zc1 -Zm2 -Za4 -Zd 600 600 .300 -o`
>   end
>   def Alchemy.tiffgray(file)
>     `alchemy #{file} -t1 -Zc1 -Zm2 -b -c256 -8 -Za4 -Zd 300 300 .300 -o`
>   end
> end
> --
> Posted viahttp://www.ruby-....

its not going to work the way you are doing it. backquotes cant tell
if the command inside them completed "successfully" or not, they just
run it and return STDOUT. you need to analyze the return status of the
command, then raise an error if it failed.

Peter Bailey

2/13/2009 12:31:00 PM

0

snex wrote:
> On Feb 12, 1:38�pm, Peter Bailey <pbai...@bna.com> wrote:
>> input file that's just bad. So, my Alchemy Ruby code fails, because
>> class Alchemy
>> � � `alchemy #{file} -t1 -Zc1 -Zm2 -b -c256 -8 -Za4 -Zd 300 300 .300 -o`
>> � end
>> end
>> --
>> Posted viahttp://www.ruby-....
>
> its not going to work the way you are doing it. backquotes cant tell
> if the command inside them completed "successfully" or not, they just
> run it and return STDOUT. you need to analyze the return status of the
> command, then raise an error if it failed.

OK. Thanks. Well, obviously, I've got to use backquotes or "system" in
this case. Being a Windows command shell program, a successful result
would be "0" in Windows, "1" or anything else if unsuccessful. Can I
capture that as part of my "raise?"
--
Posted via http://www.ruby-....

Andrew Timberlake

2/14/2009 5:09:00 PM

0

On Fri, Feb 13, 2009 at 2:30 PM, Peter Bailey <pbailey@bna.com> wrote:

> snex wrote:
> > On Feb 12, 1:38=EF=BF=BDpm, Peter Bailey <pbai...@bna.com> wrote:
> >> input file that's just bad. So, my Alchemy Ruby code fails, because
> >> class Alchemy
> >> =EF=BF=BD =EF=BF=BD `alchemy #{file} -t1 -Zc1 -Zm2 -b -c256 -8 -Za4 -Z=
d 300 300 .300 -o`
> >> =EF=BF=BD end
> >> end
> >> --
> >> Posted viahttp://www.ruby-....
> >
> > its not going to work the way you are doing it. backquotes cant tell
> > if the command inside them completed "successfully" or not, they just
> > run it and return STDOUT. you need to analyze the return status of the
> > command, then raise an error if it failed.
>
> OK. Thanks. Well, obviously, I've got to use backquotes or "system" in
> this case. Being a Windows command shell program, a successful result
> would be "0" in Windows, "1" or anything else if unsuccessful. Can I
> capture that as part of my "raise?"
> --
> Posted via http://www.ruby-....
>
>
You can get the exit status from $?.exitstatus

Andrew Timberlake
http://ramblingso...
http://www.linkedin.com/in/andrew...

"I have never let my schooling interfere with my education" - Mark Twain

Peter Bailey

2/16/2009 10:27:00 PM

0

Andrew Timberlake wrote:
> On Fri, Feb 13, 2009 at 2:30 PM, Peter Bailey <pbailey@bna.com> wrote:
>
>> > its not going to work the way you are doing it. backquotes cant tell
>>
>>
> You can get the exit status from $?.exitstatus
>
> Andrew Timberlake
> http://ramblingso...
> http://www.linkedin.com/in/andrew...
>
> "I have never let my schooling interfere with my education" - Mark Twain

Thank you. I'll try that.
--
Posted via http://www.ruby-....