[英]How do I raise a fatal exception ruby?
你當然可以。
試試這個
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.