我正在读取的字符串中有一些文本。包含字符串的对象为我提供了一种提取字符串内容的方法,然后在字符串为空时引发异常(EndOfStreamException)。到那时,我想完成数据提取并继续进行处理。我不太确定该怎么做。这就是我的猜测。

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

最佳答案

那会起作用,但是比起在运行时进行测试,捕获特定异常要好得多。

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


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

通常,将异常用于流量控制被认为是较差的设计,因为异常是针对“异常”条件的,到达流的末端是正常且预期的,并非例外。当然,如果您无法控制流的实现,则必须采用这种方法。

08-27 17:22
查看更多