Re: [問題] 寫程式style的問題(有關exception)
※ 引述《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
討論串 (同標題文章)