From: Rob Biedenharn Date: 2007-01-25T02:11:15+09:00 Subject: Re: Exception Handling/Divide By Zero/NaN Done on One Line On Jan 24, 2007, at 10:52 AM, ara.t.howard@noaa.gov wrote: > On Thu, 25 Jan 2007, John Kopanas wrote: > >> I have the following: >> >> a = (y != 0) ? (x/y) : 0 >> >> There must be a sexier way of doing this! Any suggestions? >> >> On a side note... how do we do exception handling on the same line >> as statement? >> >> a = x/y rescue 0 >> >> That does not work but does it make sense? Is it because dividing by >> zero does not throw an exception? >> >> Thanks for your help! :-) >> > > works for me? > > harp:~ > ruby -e' a = 42/0 rescue 42; p a ' > 42 > > i think you're doing the right thing with > >> a = x/y rescue 0 > > how doesn't it work? > > regards. > > -a > -- > we can deny everything, except that we have the possibility of > being better. > simply reflect on that. > - the dalai lama If you're not limited to Integers: >> 1/0 ZeroDivisionError: divided by 0 from (irb):1:in `/' from (irb):1 >> 1.0/0 => Infinity >> 1/0.0 => Infinity >> 0.0/0.0 => NaN >> If either x or y are Float, then dividing by zero isn't an exception. You could force an exception if you want to get back to an Integer: >> (1.0/0).to_i FloatDomainError: Infinity from (irb):7:in `to_i' from (irb):7 >> (0.0/0.0).to_i FloatDomainError: NaN from (irb):8:in `to_i' from (irb):8 -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com