Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

if expression or muffle an exception?

0 views
Skip to first unread message

aidy

unread,
Jul 26, 2008, 10:03:14 AM7/26/08
to
Hi,

I am wondering if this is bad form,

begin
system("taskkill /im firefox.exe /f")
rescue
#preventing exception if firefox process does not exist
end

or should I use an if expression?

Thank You

Aidy

Phlip

unread,
Jul 26, 2008, 10:05:51 AM7/26/08
to
aidy wrote:

You can't use an if (such as if `pgrep firefox.exe` =~ /\d+/) because
firefox.exe might disappear in the split second between the if and the system.

That's the main difference between things you can if and things you must rescue
- times when the if would have the wrong side-effects.

--
Phlip

aidy

unread,
Jul 26, 2008, 10:27:45 AM7/26/08
to
On Jul 26, 3:05 pm, Phlip <phlip2...@gmail.com> wrote:
> aidy wrote:

>
> You can't use an if (such as if `pgrep firefox.exe` =~ /\d+/) because
> firefox.exe might disappear in the split second between the if and the system.

Good point


Aidy

Joel VanderWerf

unread,
Jul 26, 2008, 2:10:18 PM7/26/08
to
aidy wrote:
> begin
> system("taskkill /im firefox.exe /f")
> rescue
> #preventing exception if firefox process does not exist
> end

Kernel#system doesn't raise exceptions. Check the return value and $?.

---------------------------------------------------------- Kernel#system
system(cmd [, arg, ...]) => true or false
------------------------------------------------------------------------
Executes _cmd_ in a subshell, returning +true+ if the command was
found and ran successfully, +false+ otherwise. An error status is
available in +$?+. The arguments are processed in the same way as
for +Kernel::exec+.

system("echo *")
system("echo", "*")

_produces:_

config.h main.rb
*

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

0 new messages