问题描述
1、原样抛出还是不抛出?2、原样抛出还是转化为自定义的异常?3、如果有多个异常是放到一个try...catch块里面还是放在多个?4、如果有异常,例如:SQLException是抛出SQLException还是抛出Exception?5、怎样抛出异常才是更合理的呢?
解决方案
第一条,抛还是不抛,取决于你现在处理还是暂时不处理。无论如何,出了异常掩盖掉总是不合适的吧 =,.=第二条,取决于你的异常的用途,说实话,自定义exception,对于非web软件,工具类(比如框架之类),用的更多而且更有用。因为抛出的异常是要给上层程序员调用时判断,因此自定义exception更清晰。而web系统的话,当然也可以自定义各种exception,但是你有一百种理由和设计去规避掉自定义exception,毕竟上层已经没有人会去调用你的action类API(当然不是指的框架本身~)第三点,能放到一起当然放到一起,分开放代码看起来反倒乱(其实try catch本身就是引起代码乱的祸首之一~~)第四点,还是看你需求,你上层如果要对SQLException做特殊处理,包括为了页面上显示不同的句子,那就该是什么就是什么第五点,包括上面4点但不仅限于~呵呵很多项目里都有自己一套独特的exception体系,有的只有一个XXXexception类,通过自定义的errorCode去区分不同的错误信息,仁者见仁,智者见智
解决方案二:
1、原样抛出还是不抛出? 看是DAO层还是Service层抛出的,如果是DAO层抛出的你在Service层捕获的话最好把异常信息转化成相应的业务描述的异常。2、原样抛出还是转化为自定义的异常? 目前的项目是自定义了一个通用的业务异常,方便国际化和记录日志。3、如果有多个异常是放到一个try...catch块里面还是放在多个? 看实际情况啊4、如果有异常,例如:SQLException是抛出SQLException还是抛出Exception?如果是DAO层还是被另外一个DAO调用的话SQLException还是可以的,如果是你的上一抽象层中捕获这种异常则需要转化成当前抽象层中可以理解的异常。 5、怎样抛出异常才是更合理的呢?如楼上一位老兄建议,参考effective java的关于异常的处理方式。不管怎么处理吧,异常最终记录日志那是必须的,不管你是在哪一层记录,还是几层都记录。另外,自定义异常我一般都是运行时异常,那种强制别人需要处理的异常很少用,因为,一般情况下,抛出异常了,调用者还可以恢复操作的可能性很小。
解决方案三:
直接往上抛,,,(记录日志)。。到action处理异常,返回结果到页面提示“系统繁忙”。、。
解决方案四:
建议参考 effective java的关于异常的处理方式。