作者poopoo888888 (阿川)
看板Programming
標題Re: [問題] 請問exception能用if else取代嗎?
時間Tue Aug 16 10:20:22 2011
: 以前沒有 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
推 kdjf:Python_syntax_and_semantics#Exceptions 140.112.245.32 08/16 14:34
→ kdjf:on wikipedia 140.112.245.32 08/16 14:34
推 Ross0916:for me exception is like "break" 129.67.176.18 08/16 15:34
推 aecho:我覺得常常蠻難抉擇的…所以決定旁聽了。XD 219.85.43.30 08/16 19:23
推 jtmh:其實會用 exception 還有種狀況是:在你本身 218.175.154.99 08/16 22:33
→ jtmh:的函式裡是無法確定該怎麼處理該狀況的,所以 218.175.154.99 08/16 22:34
→ jtmh:你必須丟出 exception 給外面 call 你的人處 218.175.154.99 08/16 22:35
→ jtmh:理才行。 218.175.154.99 08/16 22:35
→ jtmh:不過以往還未有 exception 機制時也是可用特 218.175.154.99 08/16 22:38
→ jtmh:殊的回傳值代替就是了。 218.175.154.99 08/16 22:38