首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

最近才领悟到exception在开发中的好处,不知是否理解有误

2014-01-26 
最近才领悟到exception在开发中的好处,不知是否理解有误,例如,一个用户注册流程:我们要根据用户的输入来返

最近才领悟到exception在开发中的好处,不知是否理解有误,

例如,一个用户注册流程:
  我们要根据用户的输入来返回给用户不同的结果;
  “用户名格式错误”
  “密码格式错误”
  “邮箱格式不正确”
 
  我不知道大家平时是怎么做的,我做这样的事情有两种处理方法:
  1.有几个检测属性就写几个检测方法,然后在一个主控制类里做处理
  if(Checker.invalidUserName)
  return Constant.INVALID_USER_NAME;
  if(Checker.invalidEmail)
  return Constant.INVALID_EAMIL;
  .......
 
  2.或者简单些,直接写个方法,让它反回个int,0是密码错误,1是用户名格式错误....
 
  但这么看起来,我们还是在面向过程写程序不是么……?而且还要处理并发问题,这synchronized一下,那synchronized一下的,搞不好哪块锁就被提前拿走了;
 
  我最近用exception来处理,发现问题简单了很多
  if(Checker.invalidUserName)
  throw new InputException(Constant.INVALID_USER_NAME);
  if(Checker.invalidEmail)
  throw new InputException(Constant.INVALID_EMAIL);
 
  然后我们在外面,直接在catch block里做处理;
  catch(InpuException){
  //do something...
  }
 
  这样既保证了我们处理时是synchronized的,又增强了代码的可读性,我想,这应该才是面向对象的设计吧??

------解决方法--------------------------------------------------------
说实话 尽量不要用Exception来处理业务相关的东西。。。
  不过,有时候 用Exception处理反而比较方便 那就用Exception处理。(这种情况在处理业务层的东西的时候比较多见)
  如果,在写基础框架,还是尽量避免。。。。。。
------解决方法--------------------------------------------------------
你只是说到Exception的自定义异常,只是Exception的一部分,而我们大多都要继承系统的异常,从而改造成自己所需要的。
  而且一个很直观的错误一般也不用异常处理,而对比较不好把握的情况时我们才使用它。
------解决方法--------------------------------------------------------
exception特别是checked exception会增加程序处理的开销毫无疑义。这个和exception类本身的细节没有关系。
 
  exception就是exception,如果属于你的业务的正常流程,就不能算exception.
  用户输入了错误格式,对于用户来说可能是异常,但是对于系统来说却不一定是。
 
  一个可以借鉴的例子是:hibernate以前所有的hibernateException都是checked exception,后来都换成了unchecked exception.
------解决方法--------------------------------------------------------
使用checked exception控制流程,性能开销肯定是有的,但是,是不是大的足够影响系统的性能?就我的经验来说,那点开销对系统运行并没有显着的影响。而这样好处显而易见:代码清晰可读,扩展性强。
------解决方法--------------------------------------------------------
如果需要这种判断,也只能逐一比较了。你的做法只是把判断转移到catch段而已。
  而且用异常控制流程是不建议使用。当然,就事论事,看情况了。
------解决方法--------------------------------------------------------
用异常慢,最好是用struts的校验来做,不过,有时候的确需要用异常来处理一些东西。
------解决方法--------------------------------------------------------
使用checked exception控制业务流程还有一个很大的好处:业务异常本身可以携带信息.
------解决方法--------------------------------------------------------
自定义异常好实用的说!
  还可以配置一个异常信息.properties
------解决方法--------------------------------------------------------
其实当前异常机制还不太好
------解决方法--------------------------------------------------------
不推荐用异常处理去实现一些业务逻辑的东西!
  至于你所说的“用户名格式错误”“密码格式错误”“邮箱格式不正确”之类的,可以采用javascript去实现!         

热点排行