c#如何在不符合条件时显示错误 - 对于每个语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何在不符合条件时显示错误 - 对于每个语句相关的知识,希望对你有一定的参考价值。

我有代码(有效),它将遍历一系列XML元素(Id),当它找到元素值和预定义变量(cpluuid)之间的匹配时,它将更新另一个子元素值( OriginalFileName),基于预定义的函数(SetNewValue)。

我无法弄清楚的是,只有当它已遍历所有元素并且未找到匹配时,如何抛出错误。理想情况下,它还将停止执行程序中的其余代码。

当它找到每个不匹配的元素时,我可以让它抛出错误,但这不是我想要的。

XML示例:

<PackingList xmlns="http://www.smpte-ra.org/schemas/2067-2/2016/PKL">
  <Id>urn:uuid:296a656c-3610-4de1-9b08-2aa63245788d</Id>
  <AnnotationText>IMF_JOT_Sample</AnnotationText>
  <IssueDate>2018-02-16T20:59:42-00:00</IssueDate>
  <Issuer>Generic</Issuer>
  <Creator>Generic</Creator>
  <AssetList>
    <Asset>
      <Id>urn:uuid:dd5a88d2-ccec-4b22-8584-fda51945c3ea</Id>
      <AnnotationText>Audio_dd5a88d2-ccec-4b22-8584-fda51945c3ea.mxf</AnnotationText>
      <Hash>OwjRFnWZCdKHSZ+3PBXroDhMMlY=</Hash>
      <Size>1458414</Size>
      <Type>application/mxf</Type>
      <OriginalFileName>Audio_dd5a88d2-ccec-4b22-8584-fda51945c3ea.mxf</OriginalFileName>
      <HashAlgorithm Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    </Asset>
    <Asset>
      <Id>urn:uuid:9e11458a-71fb-4702-8609-55d2308dcc64</Id>
      <AnnotationText>Sub_9e11458a-71fb-4702-8609-55d2308dcc64.mxf</AnnotationText>
      <Hash>48KyxgwCJVXIdgAGfaNApheQN5M=</Hash>
      <Size>34509</Size>
      <Type>application/mxf</Type>
      <OriginalFileName>Sub_9e11458a-71fb-4702-8609-55d2308dcc64.mxf</OriginalFileName>
      <HashAlgorithm Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    </Asset>
      <Asset>
      <Id>urn:uuid:d0686356-19c7-4bf4-b915-db778c308d1</Id>
      <AnnotationText>CPL_IMF_JOT_Sample.xml</AnnotationText>
      <Hash>5Yf4BV4GZ4qE9EjvtohZ8Rq8M2w=</Hash>
      <Size>21881</Size>
      <Type>text/xml</Type>
      <OriginalFileName>CPL_IMF_JOT_Sample_272.xml</OriginalFileName>
      <HashAlgorithm Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    </Asset>
    <Asset>
      <Id>urn:uuid:3f57f474-4c81-438e-a67d-1b08fa09a10d</Id>
      <AnnotationText>IMF_JOT_Sample</AnnotationText>
      <Hash>q8TiPkg/3devlN3LXnBhrgkZ968=</Hash>
      <Size>713</Size>
      <Type>text/xml</Type>
      <OriginalFileName>OPL_3f57f474-4c81-438e-a67d-1b08fa09a10d.xml</OriginalFileName>
      <HashAlgorithm Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    </Asset>
  </AssetList>
</PackingList>

码:

foreach (var pklasset in pklassetElements)

    var idElement = pklasset.Descendants(pklns + "Id").First();
    if (!idElement.Value.Equals(cpluuid))
        continue;

    SetNewValue(pklasset, pklns + "OriginalFileName", outfile);//update cpl filename in pkl


答案

一种方法是设置一个bool标志变量来跟踪你是否找到了一个匹配:

bool foundItem = false;

foreach (var pklasset in pklassetElements)

    var idElement = pklasset.Descendants(pklns + "Id").First();
    if (!idElement.Value.Equals(cpluuid)) continue;

    //update cpl filename in pkl
    SetNewValue(pklasset, pklns + "OriginalFileName", outfile);
    foundItem = true;
    break;


if (!foundItem) throw new Exception("Item not found");

以上是关于c#如何在不符合条件时显示错误 - 对于每个语句的主要内容,如果未能解决你的问题,请参考以下文章

如何加入 2 SELECT 语句,但仅在表 B 上满足表 A 的条件时显示输出

csharp 触发错误消息并在满足条件时显示在屏幕上

在每个页面加载时显示随机 DIV(对于fancybox modal)

验证 UITextField 并在错误时显示 UIAlertView

满足条件时显示 Photon Room(4 个玩家)中的一个玩家的字符串

wx小程序只有一张图时显示大图,多张图时显示一排三张,如何实现?