gpt4 book ai didi

language-agnostic - 应用程序中各层之间的通信

转载 作者:行者123 更新时间:2023-12-01 09:39:22 25 4
gpt4 key购买 nike

假设我们在业务层有以下方法。告诉 UI 层出现问题并给出错误消息的最佳实践是什么?该方法是否应该在正常时返回一个空字符串,否则返回错误消息,还是应该在包装捕获的异常的捕获代码中抛出另一个异常?如果我们选择第二个变体,那么 UI 应该有另一个 try,catch 太多的 try,catch 可能。这是第一个变体的伪代码。

public String updateSomething()
{
try
{
//Begin transaction here
dataLayer.do1();
dataLayer.do2();
dataLayer.doN();
//Commit transaction code here
}
catch(Exception exc)
{
//Rollback transaction code here
return exc.message;
}

return "";
}

这是一个好习惯还是我应该在 catch 中抛出另一个异常(然后该方法将无效)?

最佳答案

我喜欢将标准契约(Contract)从我的业务层返回到我的 UI 层。

看起来像这样:

public class ServiceOperationResult<T>
{

public bool Successful
{
get;
set;
}

public ServiceErrorType ErrorType
{
get;
set;
}

public string ErrorMessage
{
get;
set;
}

public T ReturnData
{
get;
set;
}
}

我使用泛型,以便每个服务都可以定义它发回的内容,并且标准错误标志告诉客户端应用程序发生了什么类型的错误(这些是元类型,如“内部错误”、“外部方错误” , “业务规则验证错误”),然后应用可以以标准方式对这些错误类型使用react。

例如,业务错误显示在红色错误标签中,而内部错误被重定向到错误页面(在 Web 应用程序中)或关闭表单(在 Windows 应用程序中)

我最讨厌在网站上看到红色标签(我希望看到验证错误)并看到诸如“数据库服务器拒绝您的连接”之类的内容,这是您仅使用字符串返回的风险错误数据。

关于language-agnostic - 应用程序中各层之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2528605/

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