作者james732 (好人超)
站內Programming
標題Re: [問題] 請問exception能用if else取代嗎?
時間Tue Aug 16 10:09:23 2011
※ 引述《poopoo888888 (阿川)》之銘言:
: 大家好 小弟是程式新手
: 最近在學習上遇到了一個觀念問題
: 就是exception的用處
: 我知道它用來解決例外狀況
: 可是這樣的功能 不能用一連串的if、else if、else來處理掉嗎?
: 平時寫code也會用if.. else來確保一些變數內容的正確性不是嗎?
: 還是說exception的確完全可用if else取代
: 但是用exception有其他方便的地方?
: 煩請版上各位大大解惑了 謝謝!
以前沒有 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
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.35.184.77
→ james732:我以為我在C#板...orz 114.35.184.77 08/16 10:13
推 poopoo888888:不懂語法 但我懂您的意思 非常謝謝! 61.231.25.104 08/16 10:14
推 lmr3796:fun()==-1在unix programming很常見 140.112.217.3 08/16 10:35
→ lmr3796:很多系統提供的函式庫出錯時會回來-1 140.112.217.3 08/16 10:36
→ lmr3796:然後把errno設回某個值,perror函式就是 140.112.217.3 08/16 10:36
→ lmr3796:print出前面的errno代表的意思是什麼錯誤 140.112.217.3 08/16 10:37
推 poopoo888888:原來如此 感謝lmr大218.166.198.121 08/17 10:47