Re: [問題] 請問exception能用if else取代嗎?

看板Programming作者 (阿川)時間12年前 (2011/08/16 10:20), 編輯推噓4(406)
留言10則, 4人參與, 最新討論串3/5 (看更多)
: 以前沒有 exception 的時候,常常會看到這種程式碼 : (-1這個數值常用在發生錯誤時回傳,而 perror 可以印出錯誤原因) : if (function1(xxx) == -1) { : perror("ERROR: "); : exit(1); : } : if (function2(yyy) == -1) { : perror("ERROR: "); : exit(1); : } : 如果有了 exception : : try : { : function1(xxx); : function2(xxx); : } : catch (Exception e) : { : Console.WriteLine(e.Message); : Console.Exit(1); : } : 程式碼變得比較簡潔、而重覆的程式碼也變少了 : 而且把所有「正常執行」的程式與「錯誤處理」的程式分開 : 對架構更能一目瞭然 : C語言就是完全沒有 exception,全部都要用 if-else 來寫 : 它仍然是很好用的程式語言,不過有的時候真的會覺得很煩...XDD 謝謝這位大大 所以我最後所問「還是說exception的確完全可用if else取代 但是用exception有其他方便的地方?」 這段敘述是對的囉! 但我總覺得我會寫出「用if else除錯」跟「用exception除錯」混雜的程式碼 是不是if else只用來處理合法狀況 其餘的全部交給exception比較好 而不要試圖用if else除錯? 還是有什麼使用這兩者上的時機與訣竅? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.25.104

08/16 14:34, , 1F
Python_syntax_and_semantics#Exceptions
08/16 14:34, 1F

08/16 14:34, , 2F
on wikipedia
08/16 14:34, 2F

08/16 15:34, , 3F
for me exception is like "break"
08/16 15:34, 3F

08/16 19:23, , 4F
我覺得常常蠻難抉擇的…所以決定旁聽了。XD
08/16 19:23, 4F

08/16 22:33, , 5F
其實會用 exception 還有種狀況是:在你本身
08/16 22:33, 5F

08/16 22:34, , 6F
的函式裡是無法確定該怎麼處理該狀況的,所以
08/16 22:34, 6F

08/16 22:35, , 7F
你必須丟出 exception 給外面 call 你的人處
08/16 22:35, 7F

08/16 22:35, , 8F
理才行。
08/16 22:35, 8F

08/16 22:38, , 9F
不過以往還未有 exception 機制時也是可用特
08/16 22:38, 9F

08/16 22:38, , 10F
殊的回傳值代替就是了。
08/16 22:38, 10F
文章代碼(AID): #1EITFe5a (Programming)
討論串 (同標題文章)
文章代碼(AID): #1EITFe5a (Programming)