當從異常搶救,有兩種方法來指代出現了異常的變量:
begin
...
rescue Exception => e
handle_the_error(e)
end
和
begin
...
rescue Exception
handle_the_error($!)
end
我相信他們是可以互換的,但他們?是否有任何情況下應該使用另一種?
當從異常搶救,有兩種方法來指代出現了異常的變量:
begin
...
rescue Exception => e
handle_the_error(e)
end
和
begin
...
rescue Exception
handle_the_error($!)
end
我相信他們是可以互換的,但他們?是否有任何情況下應該使用另一種?
我也認爲這些片段是可以互換的。但是你應該總是喜歡顯式變量來表達線程全局的魔力。
一種情況$!
魔術var爲方便:
result_or_error = perform_some_operation() rescue $!
對於那些誰不知道這行的意思是:
它所謂的「內聯救市」。格式是這樣的:
<expr1> rescue <expr2>
首先,expr1
被評估。如果沒有發生異常,則返回其值。但是如果出現異常,則會評估expr2
並返回其值。
因此,在這種情況下,如果perform_some_operation()
發生異常,則將變量result_or_error
設置爲該例外的一個實例(因爲$!
返回上一個錯誤)。
你能解釋一下嗎? –
更新了答案 –
謝謝。這其實很棒。 –
這裏有太多['例子'](http://stackoverflow.com/search?q=inline+rescue)除了這一個。 –