java项目异常处理设计

  • 项目结构
  • 异常设计
    公司项目,项目分三层使用ssi(struts2.spring.ibatis),种种原因异常处理比较模糊,目前编程人员对异常处理没有概念,统一梳理以作记录.
  1. xxxDao–interface–throws Exception
  2. xxxBo–interface–throws Exception
  3. xxxBoImpl–class–try()catch{}–throws Exception
  4. xxxAction–class–try()catch{}/throws Exception

1.1 xxDao–interface–throws Exception
Dao层接口直接抛出异常,这样会将数据库操作中的异常抛出以便处理
java项目异常处理设计_第1张图片
2.1xxxBo–interface–throws Exception
Bo接口抛出自定义异常,为了在实现类中抛出自定义异常(不太清楚为什么要自定义异常)
java项目异常处理设计_第2张图片
3.1xxxBoImpl–class–try()catch{}–throws Exception
实现类中抛出异常,公司架构中如此个人认为,应该在此处打印异常栈,调试时可以直接定位异常位置.并且向上将此异常抛出.以便在action处理异常显示给用户一个友好界面(不try()catch{}也行,直接向上抛出在action处理,懵…)
java项目异常处理设计_第3张图片
4.1 xxxAction–class–try()catch{}/throws Exception
此处个认为不必抛出异常,可以直接在此处处理后返回给用户即可
java项目异常处理设计_第4张图片
总结:
为什么要抛出自定义异常,boImpl问什么要抛出自定义异常,action抛给虚拟机为什么???啊晕…

续1:今天遇到一个有意思的写法,大概意思是方法返回void但是方法中出现大量throw new ServiceException(xxx);觉得挺新颖的,替代了返回值处理,把要给客户界面的信息封装到自定义异常中然后抛到action中然后直接返给客户.个人觉得应该会浪费性能吧.毕竟执行了多余异常处理线程,原线程也并未结束.
java项目异常处理设计_第5张图片

你可能感兴趣的:(问题)