Re: [問題] rescue裡頭的else clause行為
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章