1
我想更改錯誤消息及其回溯的顯示方式,而不會出現rescue
-發生錯誤並調用自定義方法。有沒有辦法做到這一點?是否有一個方法在顯示可覆蓋的錯誤消息時調用?如果它是Ruby的內置部分,是否有人能指向相關的C代碼來格式化錯誤消息和回溯?有沒有辦法改變錯誤信息的顯示方式?
我想更改錯誤消息及其回溯的顯示方式,而不會出現rescue
-發生錯誤並調用自定義方法。有沒有辦法做到這一點?是否有一個方法在顯示可覆蓋的錯誤消息時調用?如果它是Ruby的內置部分,是否有人能指向相關的C代碼來格式化錯誤消息和回溯?有沒有辦法改變錯誤信息的顯示方式?
matugm對samuil相關問題的回答指出了我的方式。我可以這樣做:
at_exit do
print_the_altered_error_message($!) if $! and !$!.kind_of?(SystemExit)
$stderr.reopen(IO::NULL)
end
這不會對語法錯誤有效,但對於大多數其他情況,它將起作用。
這是一個有趣的問題,但出於好奇,爲什麼用開始/救援塊保護腳本的主要方法不是一種選擇? – tokland
@tokland因爲我希望這是我寫的任何Ruby腳本的默認行爲。我不想爲每個Ruby腳本編寫'rescue'。至少,我將不得不包含進行修改的相關文件。 – sawa
退房http://stackoverflow.com/questions/10521559/registering-handler-for-unhandled-exceptions – samuil