gpt4 book ai didi

java - 最佳实践——service/dao/business层的异常处理

转载 作者:行者123 更新时间:2023-12-02 07:58:41 24 4
gpt4 key购买 nike

当不同层抛出错误时,进行异常处理的最佳实践是什么。

我有 4 层代码 - DAO 、 SERVICE 、 BUSINESS 、 PRESENTATION 。我正在 try catch dao 层中的一些运行时异常,并希望它在表示层中显示一些消息。下面的方法是一个好的方法吗?

在代码片段中 - DataException 是我的运行时异常类。Service 和 Business 异常类是我的检查异常实现类。

代码片段如下:

在 dao 层,一个方法检查数据库中的某些值

class dao{
public User getUser() throws DataException{

User user = null;

try
{
//some operation to fetch data using hibernatetemplate
}catch(Exception ex){
throw new DataException(ex.getMessage());
}

return user;
}
}

服务.java

 class service{
public User getUser(String username) throws ServiceException{

User user = null;

try
{
//some operation to fetch data using dao method
dao.getuser(username);
}catch(DataException ex){
throw new ServiceException(ex.getMessage());
}

return user;
}
}

业务.java

 class business{
public User getUser(String username) throws BusinessException{

User user = null;

try
{
//some operation to fetch data using dao method
service.getuser(username);
}catch(ServiceException ex){
throw new BusinessException(ex.getMessage());
}

return user;
}
}

在表示层,让它成为一个 Controller 类

 class Presentation{
public User getUser(String username) throws BusinessException{

User user = null;


//some operation to fetch data using business method
business.getUser(username);

return user;
}
}

假设从表现层消息在前端JSP页面中抛出给用户..

最佳答案

您应该用代码将业务异常封装在PresentationException 中。此代码用于以本地化方式呈现错误消息。该代码允许错误消息纯粹出现在演示文稿中,并且针对不同的 View 具有不同的消息。

 try{
getUser(...);
}catch(BusinessException b){
throw new PresentationException(ErrorEnum.GetUserError,b);
}

这个执行应该以某种方式放入模型( View 上下文)中。

在 JSP 中您可以执行以下操作:

if(exception){
if(debug) print(exception.getCause().getMessage());
else print(localize(exception.getErrorCode());
}

关于java - 最佳实践——service/dao/business层的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com