C#使用流控制的例外

时间:2011-11-29 05:03:43

标签: c# exception

我正在读取的字符串中有一些文本。包含字符串的对象提供了一种方法,用于提取字符串的内容,然后在字符串为空时抛出异常(EndOfStreamException)。那时我想完成数据提取并继续处理它。我不太确定如何做到这一点。这是我猜的。

while(/*some condition on the data*/)
try
{
    objWithString.ExtractData();
}
catch (Exception e)
{
    if(e is EndOfStreamException)
        {
            break;
        }
    else
       throw e;
}
}

1 个答案:

答案 0 :(得分:4)

这样可行,但抓住特定异常比在运行时进行测试更好,即。

while (/*some condition on the data*/)
try
{
    objWithString.ExtractData();
}
catch (EndOfStreamException)
{
    break;
}

我不完全确定“break”是否适用于catch子句。如果没有,您可能必须将其提取到方法中并使用“return”。

通常使用流量控制的异常被认为是设计不佳,因为异常是针对“特殊”条件而且到达流的末尾是正常的和预期的,而不是例外。当然,如果你无法控制流的实现,那么你必须采用这种方法。