我正在读取的字符串中有一些文本。包含字符串的对象提供了一种方法,用于提取字符串的内容,然后在字符串为空时抛出异常(EndOfStreamException)。那时我想完成数据提取并继续处理它。我不太确定如何做到这一点。这是我猜的。
while(/*some condition on the data*/)
try
{
objWithString.ExtractData();
}
catch (Exception e)
{
if(e is EndOfStreamException)
{
break;
}
else
throw e;
}
}
答案 0 :(得分:4)
这样可行,但抓住特定异常比在运行时进行测试更好,即。
while (/*some condition on the data*/)
try
{
objWithString.ExtractData();
}
catch (EndOfStreamException)
{
break;
}
我不完全确定“break”是否适用于catch子句。如果没有,您可能必须将其提取到方法中并使用“return”。
通常使用流量控制的异常被认为是设计不佳,因为异常是针对“特殊”条件而且到达流的末尾是正常的和预期的,而不是例外。当然,如果你无法控制流的实现,那么你必须采用这种方法。