我有一些客戶端代碼,在本例中爲MyModule
,它在子模塊Exception
中定義了一些自定義的異常。在MyModule
有一個rescue
塊,其中引用Exception
。問題是,當ruby需要成爲核心ruby的基類Exception類時,它將名字Exception
解析爲MyModule::Exception
(一個模塊)。這裏有一個代碼圖示來說明我的意思:如何指定異常,當它似乎沒有模塊?
puts Exception
puts Exception.class
module MyModule
module Exception
class CustomError < StandardError
end
end
end
module MyModule
puts Exception
puts Exception.class
end
輸出的結果是:
Exception
Class
MyModule::Exception
Module
我怎樣才能迫使第二Exception
參考解析爲核心紅寶石Exception
類時沒有模塊區分它?我已經嘗試過Kernel :: Exception,並且調查是否有方法讓模塊進入,但似乎只有#name
,它產生了類的完全限定名。
我會去用這個,因爲防止雨傘捕捉的樣板警告是不可避免的值得。在這種情況下,它是我客戶的代碼,所以我不完全掌握它的寫法。我同意更具體的異常處理將是最好的。 –