gpt4 book ai didi

asp.net - 如何处理多层 ASP.NET Web 应用程序中的异常

转载 作者:行者123 更新时间:2023-12-02 05:06:32 25 4
gpt4 key购买 nike

我有一个带有UI服务层存储库层 的 ASP.NET Web 窗体应用程序。

我的服务层中的一些方法与 Web 服务通信,因此我想将所有对 Web 方法的调用包装在 Try-Catch-Finally 构建。

假设我的服务层中有以下方法:

public RegistrationDetails GetRegistrationDetails(int userId)

public bool RegisterUser(UserData myUserData)

其中 RegistrationDetailsmyUserData 是对象类型(类)。

我担心的是:如果我创建一个 Try-Catch-Finally 来将对 Web 服务的调用包装在上面列出的方法的实现中,万一出现异常怎么办如果返回类型是 RegistrationDetailsbool,我会返回消息字符串吗?

我正在考虑为每个返回对象添加一个属性,但我不知道这是否是一个好的解决方案。例如,不使用 bool:

public class RegisterResponse
{
public bool isRegistered { get; set; }
public string ExceptionMessage { get; set; }
}

public RegisterResponse RegisterUser(UserData myUserData)

然后检查 ExceptionMessage 是否为 nullString.Empty。这是一个好方法吗?谢谢

最佳答案

1) 正如 IrishChieftain 所提到的,将异常冒泡到表单中是好的,您将能够更好地响应异常

2) 你也可以有一个引用参数作为数组来存储方法产生的异常信息

public bool RegisterUser(UserData myUserData, optional ref ArrayList<string> errors)
{
if(error)
errors.Add("This error occured")
}

3) 对于实例对象,您可以使用 ArrayList 的实例变量来表示错误,并在属性中返回该变量

public class MyClass
{
private ArrayList<string> errors = new ArrayList<string>

public ArrayList<string> ExceptionMessages()
{
get
{
return errors;
}
}

public RegistrationDetails GetRegistrationDetails(int userId) { }
}

//Used like this:
MyClass c = new MyClass();
c.GetRegistrationDetails();

if(c.ExceptionMessages > 0)
{
//output errors
}

但我更喜欢第一种方法 - 像输出格式化这样的灵 active

关于asp.net - 如何处理多层 ASP.NET Web 应用程序中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884403/

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