java中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去实现!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值