精华帖 (0) :: 良好帖 (6) :: 新手帖 (13) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-25
业务流程分 流程A和流程B,如果 A和B 发生的概率都是50%,那么最好用if-else
如果A和B 发生的概率 一个是主流程 发生的概率90%以上,那么B流程如果想判断的话用exception比较好,比如 用户登录,用户名密码错误不会时时刻刻发生,那么抛出异常会比较好,本来发生的几率不大,性能方面不用过多考虑 |
|
返回顶楼 | |
发表时间:2010-08-25
rocwon 写道 异常是给所不能预料到的错误而准备的解决方案,不是用来取代正常的判断的。
应该是这样的,但是要注意在不使用exception的情况下,你应该返回一个关于执行结果的消息,使得调用者能够根据这个消息来判定执行的成功与否。 |
|
返回顶楼 | |
发表时间:2010-08-25
Exception 允许你将不太容易处理的问题 交给调用者,而不是自己处理
|
|
返回顶楼 | |
发表时间:2010-08-25
jackerxff 写道 Exception 允许你将不太容易处理的问题 交给调用者,而不是自己处理
这确实是很大的优点,其附带的优点是方法签名可以简单一些 |
|
返回顶楼 | |
发表时间:2010-08-25
我也迷糊,
举个例子,NullPointException,IO流中读完会返回-1, 避免使用异常处理实现程序流程的改变。 |
|
返回顶楼 | |
发表时间:2010-08-25
wpfwupengfeiwpf 写道 呵呵,个人喜欢用if else 这样可以给用户更好的提示,throw难道要抛出异常给用户看
异常你也是需要封装的 |
|
返回顶楼 | |
发表时间:2010-08-25
最后修改:2010-08-25
N年前关注过肉饼饭的帖子,大家有空可以搜下
这段时间用下来说下使用体验 Exception JDK1.0产物 IF-ELSE JDK1.0产物 Assert JDK1.4产物 当时写API的时候估计是这样的 先有前两者,因为注重OO,所以在try ..catch中 try代码块里负责主要逻辑,catch负责与主要逻辑以外的部分 比如 try{ //吃饭 //吃什么,去哪里吃,怎么吃 }catch(... e){ //抛出没有人的异常 } 而IF-ELSE是对于主要逻辑的判断 try{ //还是吃饭 //1st condition //if(sth.equals("面")){ // ... //} //2nd condition //if(sth.equals("小吃")){ // ... //} else { // ... //} //3rd condition //if(sth.equals("小龙虾")){ // return ...; //} //return ...; }catch(... e){ //抛出没有人的异常 } 经历了岁月的变迁JDK也长大成v1.4 Assert出现,出现的原由可能是认为Exception不该处理一些与jdk非关的操作 所以在主要逻辑前加如Assert去判断不该出现的情况,而这些情况应该是帮助开发人员, 避免一些重复劳动,同时让开发人员在今后的开发中可以先关注主要业务代码, 到需要优化的时候有比较清晰的层次 之后Exception承担的责任就轻了,主要负责系统引起的不可恢复异常 |
|
返回顶楼 | |
发表时间:2010-08-25
bluemusic 写道 N年前关注过肉饼饭的帖子,大家有空可以搜下
这段时间用下来说下使用体验 Exception JDK1.0产物 IF-ELSE JDK1.0产物 Assert JDK1.4产物 当时写API的时候估计是这样的 先有前两者,因为注重OO,所以在try ..catch中 try代码块里负责主要逻辑,catch负责与主要逻辑以外的部分 比如 try{ //吃饭 //吃什么,去哪里吃,怎么吃 }catch(... e){ //抛出没有人的异常 } 而IF-ELSE是对于主要逻辑的判断 try{ //还是吃饭 //1st condition //if(sth.equals("面")){ // ... //} //2nd condition //if(sth.equals("小吃")){ // ... //} else { // ... //} //3rd condition //if(sth.equals("小龙虾")){ // return ...; //} //return ...; }catch(... e){ //抛出没有人的异常 } 经历了岁月的变迁JDK也长大成v1.4 Assert出现,出现的原由可能是认为Exception不该处理一些与jdk非关的操作 所以在主要逻辑前加如Assert去判断不该出现的情况,而这些情况应该是帮助开发人员, 避免一些重复劳动,同时让开发人员在今后的开发中可以先关注主要业务代码, 到需要优化的时候有比较清晰的层次 之后Exception承担的责任就轻了,主要负责系统引起的不可恢复异常 需要传送门 肉饼饭只有作法...没有博克 |
|
返回顶楼 | |
发表时间:2010-08-25
涉及正常流程控制的用if,其他的用异常
|
|
返回顶楼 | |
发表时间:2010-08-25
最后修改:2010-08-25
取决于方法在那一层的,如果是在Action里,肯定不能抛异常!要把错误信息反馈给用户,让用户重新进行填写!
但是Service层为了保证数据完整性,业务流程正常肯定是要抛异常的! 抛出异常的描述要稍微详细点,做到看到异常信息就能知道哪里出错了! 这样对开发和以后的维护都很有帮助 |
|
返回顶楼 | |