Re: [問題] 寫程式style的問題(有關exception)

看板java作者 (哼!)時間19年前 (2006/05/27 17:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/7 (看更多)
※ 引述《GP03.bbs@aeug.twbbs.org (Gundam Pilot)》之銘言: : ※ 引述《eliang.bbs@ptt.cc》之銘言: : > 請問在寫Java程式時, : > 好的 style 應該是 "事先預防 exception", : > 還是 "事後再處理 exception"? : > 例如: : > // 事先預防 exception : > public static main(String[] args) { : > if (args.length != 1) { : > System.out.println("Usage: ......."); : > return; : > } : > System.out.println("hello," + args[0]); : > } : > // 事後處理 excpetion : > public static main(String[] args) { : > try { : > System.out.println("hello," + args[0]); : > } catch (ArrayIndexOutOfBoundsException e) : > System.out.println("Usage: ........"); : > } : > } : > 請問大家在寫程式時, 是比較偏好哪一種? : > 理由又是什麼? 謝謝! : 說文解字: Exception 叫做例外 : 既然你知道args[0]有可能出錯就是"意料之中的事" : 所以請不要把他當"意外狀況"去處理 : 攔截exception的代價不算小 : 但是也不是在"每一個"method接收args時都要去驗證是否正確 : 會做太多次無謂的判斷 看起來有點怪怪的,言下之意 Exception 是要拿去處理"意料之外"的"意外狀況" 可是既然是意料之外我們怎麼會去想要處理呢? 我的概念不知道有沒有問題, 之前看書的印象是, Exception可以把一些繁複的資料檢查(if elase...etc)簡化 並且可以throw到function之外再處理(使用if會更麻煩) 可是如文中所說,catch Exception會導致效率下降(原因是?比if else還慢?) 所以會有種能不用catch就不用catch的觀念 或是儘量把Exception throw到上幾層來catch(個人以為這樣會比較快?) 也就是說當一個statement或是function要執行for或是while之類的loop時 把try catch拉到loop之外來處理,應該會比在loop內try-catch快吧? 個人的想法,不知道是否正確。 另外,個人認為Exception比較適合用在一些Critical Error, 程式無法再繼續run下去的時候 這時就突顯了Exception可以throw出function之外來處理的特性 如果程式可以在function自行修正錯誤,用一般的if來做判斷就可以了 不過,個人認為其實不用太在意performance的問題, 因而不用Exception,以軟體工程的角度來看, Performance Tune是在程式正確完成之後才開始的, 何況我覺得Java最大的效能問題是卡在GC, 如果真正要講performance還是使用native code來做吧.... 個人想法 若有錯誤還請不吝指正 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.198.12.33
文章代碼(AID): #14U1c-yu (java)
討論串 (同標題文章)
文章代碼(AID): #14U1c-yu (java)