Как прервать сценарий Ruby при создании исключения? - PullRequest
2 голосов
/ 04 марта 2012

Возможно ли в Ruby вызвать исключение, которое также автоматически прервет программу, игнорируя любые включающие блоки начала / восстановления?

Ответы [ 4 ]

7 голосов
/ 04 марта 2012

К сожалению, ни один из этих exit ответов не будет работать. exit поднимает SystemExit, который можно поймать. Обратите внимание:

begin
  exit
rescue SystemExit
end

puts "Still here!"

Как говорит @dominikh, вам нужно использовать exit! вместо:

begin
  exit!
rescue SystemExit
end

puts "Didn't make it here :("
1 голос
/ 04 марта 2012

Edu уже спросил: Если вы хотите прервать программу, почему бы не пойти прямо к ней и использовать 'exit'

Одна возможность: вы можете определить свое собственное исключение и когдавызывается исключение, исключение останавливает программу при выходе:

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 :("
0 голосов
/ 04 марта 2012

Мой ответ похож на ответ Маран, но немного отличается:

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 :("
0 голосов
/ 04 марта 2012

Будет ли это делать то, что вы хотите?

begin
  puts Idontexist
rescue StandardError
  exit
  puts "You will never see meeeeeee!"
end
puts "I will never get called neither :("
...