【发布时间】:2012-06-08 17:01:03
【问题描述】:
我有一个带有 UI、Service 层 和 Repository 层 的 ASP.NET Web Forms 应用程序。
我的 服务层 中的一些方法与 Web 服务通信,因此我想将对 Web 方法的所有调用包装在 Try-Catch-Finally 构造中。
假设我的服务层中有以下方法:
public RegistrationDetails GetRegistrationDetails(int userId)
public bool RegisterUser(UserData myUserData)
其中RegistrationDetails 和myUserData 是对象类型(类)。
我的担忧如下:如果我创建一个Try-Catch-Finally 以在上面列出的方法的实现中包装对 Web 服务的调用,如果出现异常,如果返回类型,我如何返回消息字符串是RegistrationDetails 和bool?
我正在考虑为每个返回对象添加一个属性,但我不知道这是否是一个好的解决方案。例如,而不是使用bool:
public class RegisterResponse
{
public bool isRegistered { get; set; }
public string ExceptionMessage { get; set; }
}
public RegisterResponse RegisterUser(UserData myUserData)
然后检查 ExceptionMessage 是null 还是String.Empty。这是一个好方法吗?谢谢
【问题讨论】:
-
我通常让异常冒泡到一个表单并在那里处理它。当您在较低级别捕获特定异常时,您可能会错过介于两者之间的错误的真正原因。在较低的级别,我只是将它们扔掉......
-
感谢您的回答。我之所以要捕获所有异常,是为了避免用户看到典型的 ASP.NET 错误页面。相反,我想处理它们并向用户(通过 UI)显示最佳信息集,以简化问题解决过程。
标签: asp.net exception-handling multi-layer