If expression or muffle an exception?

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

aidy wrote:

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?

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.

On Jul 26, 3:05 pm, Phlip [email protected] 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

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
     *