簡體   English   中英

如何提出致命的異常紅寶石?

[英]How do I raise a fatal exception ruby?

Ruby有一個fatal例外,但沒有關於如何raise它的指導,我無法弄明白。 如何在Ruby中引發fatal異常?

你當然可以。

試試這個

FatalError = ObjectSpace.each_object(Class).find { |klass| klass < Exception && klass.inspect == 'fatal' }

接着

raise FatalError.new("famous last words")

這是如何運作的?

  • fatal是一個內部類,沒有相關的頂級常量
  • ObjectSpace.each_object(Class)枚舉所有類
  • find { ... }找到一個名為“fatal”的異常類

盡管如此,盡管其名稱fatal並不特殊,但它可以獲救。 如果您正在尋找一種方法來結束您的計划,也許最好調用全局exit方法?

begin
  raise FatalError.new
rescue Exception => e
  puts "Not so fatal after all..."
end

簡短的回答是,你可以,但可能不應該。 此異常保留給Ruby內部。 通過使用全小寫標識符作為常量,它對用戶有效隱藏。 (除非標識符以大寫字符開頭,否則Ruby不會進行常量查找。)

fatal
NameError: undefined local variable or method `fatal' for main:Object

使用Object#const_get時也是如此:

Object.const_get(:fatal)
NameError: wrong constant name fatal

如果這個異常類是供我們使用的,那么它將隨時可用,而不是隱藏起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM