出错时可以忽略异常吗?

时间:2010-04-14 19:40:41

标签: c# .net xml

如何忽略c#中的异常?

我正在读取一个远程xml文件,有时标签不存在,它会引发异常。我如何忽略异常并转到下一个?

7 个答案:

答案 0 :(得分:4)

  

如何忽略c#中的异常?

别。

例外情况是试图告诉您代码出现问题。

如果您在XML解析期间遇到异常,因为某个特定元素不存在,那么在尝试读取之前,请将代码重写为检查该元素是否存在


如果您询问如何处理特定异常,那么您可以将其包装在try-catch块中:

XmlDocument doc = new XmlDocument();
try
{
    doc.Load(url);
}
catch (XmlException)
{
    // Handle the error here
    return (default value);
}
// Start going through the XmlDocument

以上代码将处理XML 格式错误的特定情况。但是,如果XML格式正确但是您的代码因为某个元素不存在而抛出异常并且您认为它会存在,那么根本不要使用异常处理代码;在尝试阅读它之前,只需检查它是否存在。

答案 1 :(得分:2)

try
{
 yourXmlDocument.LoadXML("xml is here");
}catch{
 //It has failed.
}

您可能更具体,只能从LoadXML中捕获错误

try
{
    yourXmlDocument.LoadXML("xml is here");
}catch(System.Xml.XmlException e){
    //It has failed.
}

答案 2 :(得分:1)

永远不要忽视异常。这些“我相信我可以放心地忽略这一点”有时候会导致最糟糕的事情并且最难找到错误。

始终至少记录例外。或者,也可以使用Debug.Fail方法,该方法将在调试版本中显示包含异常详细信息的对话框 - 这将有助于您更好地诊断大多数问题。

在这种特殊情况下(XML解析),肯定有一种方法可以处理在没有找到数据但没有捕获和忽略异常的情况下的情况 - 随意编辑答案以向我们展示精确的xml解析方法正在使用,我们可以告诉你如何避免例外。

由于您可能会询问一般情况,如果您想“忽略”它们(如果您不希望将它们显示给用户),这就是您处理异常的方式:

try
{
  //do something that throws an exception
}
catch(Exception ex) //or even better: catch a specific exception type
{
  //do not ignore the exception, at least log it
  System.Diagnostics.Debug.Fail(ex.Message, ex.ToString());
  log.Debug("Probably expected error happened: " + ex.ToString());
}

答案 3 :(得分:1)

那么,回答你的问题,如果你把你的代码放在Try Catch块中,然后对于有问题的异常,只需抓住它并且什么都不做。

话虽如此,为什么不在处理时检查空标记而不是依赖异常处理?异常处理通常比检查条件具有更多开销,如果存在可能不存在某些情况的预期情况,则应在代码中处理该情况。

答案 4 :(得分:0)

您可以简单地在代码周围放置一个try / catch,并且不会对生成的异常执行任何操作。

答案 5 :(得分:0)

如果异常是远程,就像你说的那样,并且你只获得其消息或结果的字符串版本,那么你将无法使用异常处理机制。但是,您可以在识别字符串并执行某些操作时将某些内容拼凑在一起。

如果你得到了Exception对象,那么你可以pull out the good old try/catch stuff就可以了。

答案 6 :(得分:0)