3
服务层是否应该捕获所有dao异常并将其包装为服务异常?
我有三层Spring Web应用程序:dao,服务和控制器。控制器从不直接调用dao,而是通过服务层进行调用。现在,大多数情况下,如果存在未处理的dao异常(运行时),则JSP将捕获该异常,并向最终用户显示错误消息。服务层是否应该捕获所有dao异常并将其包装为服务异常? try { daoInstance.someDaoMethod(); } catch(DataAccessException dae) { throw new ServiceException("message", dae); } 假设ServiceException也是运行时,并且也未处理。仅抛出DataAccessException而不是ServiceException有什么区别吗?我只是以为表示层不应该知道数据访问异常。但是我不认为捕获不可恢复的异常只是为了包装它们。