问题描述
在网上查了好多关于异常处理的例子,也看了不少关于异常处理规范,但是还是不怎么清楚java异常处理到底怎么做才算好.希望高手给个详细的例子说明 异常 在实际 开发中该怎么处理1:说什么时候我们应该把异常重新抛出,为什么要重新抛出2:发生异常后,除了释放资源,日志记录操作后,我们怎么样来给用户或客户出示一个清晰的提示
解决方案
一、发生异常时,应该给用户一个明确的提示,告诉用户错误原因,应该如何操作。从用户角度考虑,我把异常分为以下几种:1、用户异常: 相当于业务异常,如用户输入密码错误,则throw new BussinessException("密码输入错误,请重试");2、代码异常:如程序员疏忽,导致代码抛出NullException。这类异常对于用户来说,没办法作出回应。用户只能找管理员解决这个问题。所以这类异常可以定义为:"您的操作服务器无法响应,请联系管理员";3、其他的可以为外界环境导致的异常,如数据库无法连接等,这类异常对于用户来说一样没办法。二、异常框架的搭建提以下几点:1、捕获底层异常,转为自定义的异常。如SQLException,由DAO捕获,并且抛出DaoException。这里的SQLException为底层异常2、自定义异常一般继承RuntimeException,这样无需再接口上声明。3、出现底层异常立即捕获,自定义异常让后台最上层代码处理。如web应用可以由action的基类或者filter统一处理异常,抛给用户。4、业务异常可以命名的更有意义,如UserNotFoundException。我比较偷懒,一般直接抛出BussinessException
解决方案二:
ls的两位已经回答了很多了,还有就是可以用异常处理框架,像struts就可以将所有异常交给它来处理,设计模式中chain of responsibility可以很好用在异常处理上。还有就是如果系统配置了事务,那异常一定要抛出,否则事务就不起作用了。
解决方案三:
异常处理应该是一个系统设计问题, 取决于你想怎么让系统报出这个异常. J2EE企业系统中你可以根据你设计的异常类型来返回不同的提示到UI界面给用户.重新抛出是在你的设计中不该由这个类处理这个异常, 就重新抛出给更高层处理
解决方案四:
这个没什么官方标准,用多了影响性能。我一般这样处理异常运行时错误导致的异常{ 警告用户:系统某模块不能正常工作时,中断用户操作并显示错误信息; 只记录日志:不影响或改变业务流程,不影响用户角色的操作;}可预测的异常{ 结束业务逻辑:当异常导致用户操作不可进行,改变流程; 重试提交:如果由于用户非法操作产生的异常,允许用户再试一次。}例子就没有了,场景太多。