不是因为坚持只是因为喜欢 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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)