作者jgpnsgm (哼!)
看板java
标题Re: [问题] 写程式style的问题(有关exception)
时间Sat May 27 17:57:49 2006
※ 引述《[email protected] (Gundam Pilot)》之铭言:
: ※ 引述《[email protected]》之铭言:
: > 请问在写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