不是因为坚持只是因为喜欢 2016-07-01 11:35 采纳率: 25%
浏览 4033

java异常从业务层集中抛出,是不是每个控制层方法都要try catch

java开发中,DAO层的方法有许多判断,异常从DAO层集中抛出,比如说UserDao在进行添加用户(add(sql,Object o))时会判断,当sql为空时抛出了自定义异常MyException("sql为空"),这时如果UserService addUser()调用了这个add方法,那么UserService必须要捕获这个自定义异常然后抛给控制层,然后控制层再进行处理吗,这是否有些太繁琐了,感觉平时大家是不会这么处理的,但是不处理Dao层抛出的那个异常程序又会中断,影响使用效果,大家都是怎么做的啊??

  • 写回答

3条回答 默认 最新

  • threenewbee 2016-07-01 12:40
    关注

    根据你的业务需要来处理。
    比如注册用户这个逻辑,在jdbc层丢出一个sqlexception,重复主键的异常,你的dal应该丢出“记录重复”这样的异常,而到了你的业务逻辑层,应该丢出“重复的用户名”,再到你的界面,就不丢出异常,而是显示一个错误提示给用户,当前用户名已经注册。

    所谓异常,就是指意外情况,也就是你代码中没有考虑的状况。比如对于jdbc来说,sqlexception是异常,但是对于你的dao来说,你可以预料到这个异常的发生,所以它本身不是异常,不上抛,而记录重复应该怎么处理,才是无法意料的事情,所以才丢出重复记录的异常。

    评论

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛