3

Rubyで、プログラムを自動的に中止し、囲んでいる開始/レスキューブロックを無視する例外を発生させることは可能ですか?

4

4 に答える 4

8

残念ながら、これらのexit答えはどれも機能しません。捕まえることができるexitレイズ。SystemExit観察:

begin
  exit
rescue SystemExit
end

puts "Still here!"

@dominikhが言うように、代わりに使用する必要がありますexit!

begin
  exit!
rescue SystemExit
end

puts "Didn't make it here :("
于 2012-03-04T00:13:45.097 に答える
1

Eduはすでに尋ねました:プログラムを中止したい場合は、まっすぐ進んで「exit」を使用してみませんか

1つの可能性:独自の例外を定義することができ、例外が呼び出されると、例外は終了してプログラムを停止します。

class MyException < StandardError
  #If this Exception is created, leave programm.
  def initialize
    exit 99
  end
end


begin
  raise MyException
rescue MyException
  puts "You will never see meeeeeee!"
end
puts "I will never get called neither :("
于 2012-03-03T23:13:38.787 に答える
0

これはあなたが望むことをしますか?

begin
  puts Idontexist
rescue StandardError
  exit
  puts "You will never see meeeeeee!"
end
puts "I will never get called neither :("
于 2012-03-03T23:01:18.133 に答える
0

私の答えはマランの答えと似ていますが、少し異なります。

begin
  puts 'Hello'
  # here, instead of raising an Exception, just exit.
  exit
  puts "You will never see meeeeeee!"
rescue # whatever Exception
  # ...
end

puts "I will never get called neither :("
于 2012-03-03T23:13:45.513 に答える