【问题标题】:Stop throwing exception in nested try-catch block停止在嵌套的 try-catch 块中抛出异常
【发布时间】:2014-04-02 11:07:56
【问题描述】:

在我的应用程序中,订单来自服务并通过 foreach 循环添加到 ItemSource。在它运行时,有一个地方可以转换 DateTime,取决于值,有时它会抛出异常。我写的代码如下:

public void MyMethod()
{
    try
    {
        foreach (var item in Orders)
        {
            DateTime date;

            try
            {
                date = item.Date;
            }

            catch
            {
                date = DateTime.Now;
            }
        }
    }

    catch
    {
    }
}

但问题是,当日期格式异常在 try 块中抛出时,它会在 inline catch 块中抛出该异常,并将该异常传递给外部 catch 块。所以我没能从服务中获得所有订单。

谁能提出解决方案来克服这个问题?

【问题讨论】:

  • 我不确定我是否理解你的最后一段。如果你说你的异常没有被 catch 块捕获,你将为我们准备一个SSCCE

标签: c# datetime try-catch


【解决方案1】:

错误可能发生在“for”循环中。

您能否发布您在这两种情况下遇到的异常情况? 当 Visual Studio 暂停程序时,它可能会说“NullReferenceException”之类的内容,这是异常的名称。

如果你指定了异常,你可以使用正确的“catch”块,当我知道异常是什么时,我会提供代码。

【讨论】:

  • 感谢您的回复。它是一个 FormatException
  • 这很奇怪,必须在 date = DateTime.Now; 处抛出 FormatException 以便外部 catch 块捕获它,我不明白为什么会发生这种情况。尝试用catch (FormatException e) 替换外部catch 并告诉我程序是否崩溃。
猜你喜欢
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 2020-12-16
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多