Re: [問題] rescue裡頭的else clause行為

看板Ruby作者 (godfat 真常)時間13年前 (2011/08/02 19:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《tonytonyjan (南洋大兜蟲)》之銘言: : else clause只會在"沒有任何異常擲出"時才會執行 : 意思是下面這兩個寫法結果是一樣的: 除非你可以保證沒有 exception, 不然這兩段是不一樣的。 但如果能保證沒有 exception, 那就沒有必要用 rescue 了, 所以簡單地說就是這兩段還是不一樣的。 : ---------- : begin : # Nothing Happens : rescue : else : puts "Do something if no exceptoin was throwed." : end : ---------- : begin : # Nothing Happens : rescue : end : puts "Do something if no exceptin was throwed." 這個 message 是錯的,因為有 exception 也會跑這段, 因為 exception 被 rescue 後就像是什麼事都沒發生, 後面是會繼續跑的。而在 begin rescue else 的 clause 則是一定要沒有 exception 才會跑。 唯一的例外是,這邊寫 begin rescue 卻沒指定什麼 exception, 表示只接 StandardError. 比方說 SyntaxError 並不屬於 StandardError, 因此單寫 rescue 並無法 rescue SyntaxError. : ---------- : 問題: : 1. 這兩種寫法既然結果一樣,但有沒有什麼理由能讓我們從中選擇一個比較好的寫法? : 否則else感覺沒有什麼大用 老實說,我從來沒用過,想不到什麼情況下需要用 : 2. 會有else行為的爭議,是因為Ruby版本的問題嗎? 有什麼爭議?(抱歉連結上的討論沒看 XD) -- Hear me exalted spirits. Hear me, be you gods or devils, ye who hold dominion here: I am a wizard without a home. I am a wonderer seeking refuge. Sacrifice -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.229.250
文章代碼(AID): #1ED-6oyu (Ruby)
文章代碼(AID): #1ED-6oyu (Ruby)