gpt4 book ai didi

c# - 正确处理 DomainOperationException

转载 作者:太空狗 更新时间:2023-10-30 01:07:55 24 4
gpt4 key购买 nike

在我的 Silverlight 应用程序中,我想正确处理不同的服务器错误。我为 DomainOperationException 创建了处理程序但我想获得有关问题根本原因的更多具体信息,并为用户提供更明确的信息。


可能的方法:

  • OperationStatus 给了我一些优势,但大部分还是连接到服务器的错误有 OperationStatus.ServerError 无论是 DB 还是 IIS 问题;
  • Exception 也有 ErrorCode 属性,但我不知道从哪里获得适用于 RIA 的可能错误代码列表;

注意:即使我自己没有设置 ErrorCode,当服务器端出现数据库连接问题时,它的值为 500。这就是为什么我希望 RIA 做所有肮脏的工作,我会避免做这些多余的工作。


问题:

  1. 正确处理的最佳方法是什么DomainOperationException?
  2. 从哪里获取可能的错误代码?

最佳答案

ErrorCode 是用户定义的值。 MSDN声明它

Gets or sets the custom error code for this exception. The error code can be any user-defined value.

可能有更优雅的解决方案,但我最终做的是创建一个 Portable Class Library (但你也可以使用 .shared 类)我用我的错误代码定义了一个 enum 。我在服务器端和客户端项目中引用了该项目。

然后我覆盖了 DomainService 的 OnError 方法并做了如下事情:

 protected override void OnError(DomainServiceErrorInfo errorInfo)
{
if (errorInfo.Error is UnauthorizedAccessException)
{
errorInfo.Error = new DomainException("Denied access.",(int)MyErrorCodesEnum.Permission_Unauthorized, errorInfo.Error);
}
}

(看着这段代码,我想创建一种异常类型和枚举器值的关联列表,这样我就可以删除 if 但你明白了)

在客户端我这样做:

switch ((MyErrorCodesEnum)(s.Error as DomainException).ErrorCode)
{
case MyErrorCodesEnum.Permission_Unauthorized:
//do something
s.MarkErrorAsHandled();
break;
}

关于c# - 正确处理 DomainOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101185/

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