gpt4 book ai didi

c# return 组合异常

转载 作者:行者123 更新时间:2023-11-30 20:37:51 26 4
gpt4 key购买 nike

我不太确定如何提出这个问题。我真的希望我能正确解释我的问题是什么。

我有多个自定义异常分布在我的 windows 服务中,我想将它们返回给启动流程步骤的主流程。

例如,我有一个静态类 PropertyMapper,它使用反射来读取电子邮件 header 并将它们反射到特定属性。现在,如果出现异常,我想添加其他信息。就像 headerattribute 实际上导致异常一样,但我不想丢失“实际”异常。

目前看起来是这样的:

try
{
PropertyInfo pInfo = prop.Property;
Type t = Nullable.GetUnderlyingType(pInfo.PropertyType) ?? pInfo.PropertyType;
object safeValue = (headerAttribute.Value == null) ? null : Convert.ChangeType(headerAttribute.Value, t);
pInfo.SetValue(mailDataObj, safeValue, null);
}
catch (Exception e)
{
throw new PropertyMappingFailedException(headerAttribute.Field, headerParam);
}

我抛出异常将其带回主进程,这样我只需要执行一次“创建 logEntry 逻辑”。´

try
{
mailDataObj = PropertyMapper.MapProperties(mailItem);
mailDataObj.MailItem = mailItem;
controller = new DAKMailController(mailDataObj);

controller.SetBasicData(procFile);
controller.HandlePostProcessing();
}
catch (Exception e)
{
controller.CreateLogEntry(e);
moveFileToError(file);
}

现在当然我最初 cought 的异常丢失了,因为我没有将它添加到我的自定义异常中,但是我该怎么做呢?另外,我的思路是对的还是必须换一种方式处理异常?

我已经用谷歌搜索了一下,但没能找到有用的东西。我会很感激一些帮助。 :)

附言我提取了 CreateLogEntry 方法内的所有 InnerExceotions,并将它们放入单个字符串变量中。

最佳答案

像这样在字段 InnerException 中包装原始异常(在您的第一个代码示例的 catch 中):

throw new PropertyMappingFailedException(headerAttribute.Field, headerParam)
{ InnerException = e };

关于c# return 组合异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35698760/

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