对于异常处理上面,个人产生了很大的疑惑或者叫不确定。
比如一个持久层类的方法,访问数据库产生了异常,这个时候我有两种选择:
1.继续使用异常(抛出该异常)通知上层/调用者出现了错误
2.完全处理掉该异常(或者可以记录一些日志什么的),然后通过返回值体现成功与否(比如boolean返回值:异常就返回false,对象返回类型:异常就返回null)
请问这两种处理方式哪种好?为什么
------解决思路----------------------
不管是抛出还是不抛出, 首先, 这个问题在当时都发生了. 服务器在没有修改的情况下, 是不会自己解决这个bug的.
所以, 将异常抛出, 还是将它捕获, 然后抛给外面一个false或者null 得看业务逻辑.
比如说.. 有用户登录, 查询数据的时候出错了, 如果你把错误抛出去, 那么上层逻辑会卡在那里, 或者显示给用户一个异常错误.或者上层自己捕获到这个异常之后, 会有自己的处理.
但如果你抛出的是null 或者false.. 上层逻辑如果认为这个人没注册, 又让他去注册了, 那是不是问题就更严重了呢... 因为你自己把异常捕获了, 那么就要去跟上层去约定, 你自己返回的null和false到底表示的是什么意思...
所以我是比较建议抛出异常, 然后上层根据异常来处理.. 而不是额外的再判断什么约定, 因为异常往往比你想象的种类要多.. 而底层处理异常和上层逻辑处理异常导致的结果可能是完全不一样的.. 所以我觉得应该让上层逻辑来判断具体应该怎么处理...
------解决思路----------------------
恩... 思路确实就这些了... 剩下的就是看具体的项目和开发者了..... 其实问题都不大...