分层异常处理规约

普天之下莫非王土 ⛰️

我一直认为你很特别,只是没想到是这么特别的人渣

在 DAO 层,产生的异常类型有很多,无法用细粒度的异常进
行 catch,使用 catch(Exception e)方式,并 throw new DAOException(e),不需要打印日志,因为日志在 Manager/Service 层一定需要捕获并打到日志文件中去,如果同台服务器再打日志,浪费性能和存储。在 Service 层出现异常时,必须记录出错日志到磁盘,尽可能带上参数信息,相当于保护案发现场。如果 Manager 层与 Service 同机部署,日志方式与 DAO 层处理一致,如果是单独部署,则采用与 Service 一致的处理方式。Web 层绝不应该继续往上抛异常,因为已经处于顶层,如果意识到这个异常将导致页面无法正常渲染,那么就应该直接跳转到友好错误页面,加上用户容易理解的错误提示信息。开放接口层要将异常处理成错误码和错误信息方式返回。

这段规约指定了在不同层级的异常处理方式。在 DAO 层,因为产生的异常类型很多,所以使用 catch(Exception e) 方式进行 catch,并将其封装成 DAOException 后再抛出,不需要在这一层级打印日志,因为日志应该在更高层级的 Manager/Service 层进行记录。在 Service 层出现异常时,必须记录日志并将其写入磁盘,尽可能带上参数信息,以保护“案发现场”。如果 Manager 层与 Service 同机部署,则日志处理方式与 DAO 层相同;如果是单独部署,则采用与 Service 一致的方式。在 Web 层,绝不能继续往上抛异常,而应该直接跳转到友好错误页面,并给出用户容易理解的错误提示信息。在开放接口层,异常应该以错误码和错误信息的方式返回。

举例来说,假设在 DAO 层进行数据库操作时出现异常,例如 SQLException,则应该使用 catch(Exception e) 方式进行 catch,并将其封装成 DAOException,然后再抛出。在 Service 层接收到 DAOException 时,应该记录日志并将其写入磁盘,例如:

try {
    // DAO layer code here
} catch (Exception e) {
    throw new DAOException(e);
}

如果在 Manager 层与 Service 同机部署,则日志处理方式与 DAO 层相同,例如:

try {
    // Service layer code here
} catch (DAOException e) {
    throw new ManagerException(e);
}

如果是单独部署,则采用与 Service 一致的方式。在 Web 层,如果出现异常导致页面无法正常渲染,应该直接跳转到友好错误页面,并给出用户容易理解的错误提示信息。在开放接口层,异常应该以错误码和错误信息的方式返回,例如:

{
    "error_code": 500,
    "error_message": "Internal server error"
}

总之,这段规约指定了不同层级的异常处理方式,以提高应用程序的可靠性和可维护性。其中,重要的是要记录日志,并尽可能地保留参数信息,以便更好地追踪和修复错误。同时,Web 层应该对异常进行友好处理,以提高用户体验。

What is Manage layer?

Manager层是业务逻辑层,也可以称为业务管理层。它通常位于Service层之上,主要负责协调和管理Service层的业务逻辑,提供更高级别的业务服务。Manager层的主要职责是处理多个Service层的交互,协调不同业务之间的关系,处理业务流程中的各种特殊情况,以及完成业务数据的汇总和统计等。

与Service层相比,Manager层通常更加高级和复杂,它们通常是系统架构的核心。Service层更加偏重于数据的处理和业务逻辑的实现,Manager层则更加偏重于协调和管理业务流程。在实际开发中,Manager层通常是基于业务需求设计的,可以根据实际情况进行扩展和修改。

举个例子,假设我们正在开发一个电商网站,其中有一个用户管理模块。Service层负责处理用户数据的增删改查等操作,而Manager层则负责协调不同的Service层,并完成用户注册、登录、密码找回、权限控制等高级别业务功能。例如,Manager层可以负责判断用户是否已经注册,如果未注册则调用Service层的注册方法进行注册。如果用户已经注册,则判断用户输入的密码是否正确,如果正确则返回登录成功信息,否则返回登录失败信息。同时,Manager层还可以负责处理用户权限控制,例如根据用户角色、订单状态等条件进行特定业务处理,例如禁止未登录用户访问特定页面,禁止普通用户修改管理员的权限等。通过这种方式,Manager层可以更加方便地处理复杂的业务逻辑,提高系统的可维护性和可扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值