I have some text in a string which I’m reading in. The object which contains the string provides a method for me to extract the contents of the string and then throws an exception (EndOfStreamException) when the string is empty. At that point I’d like to finish my data extraction and continue with working on it. I’m not very certain how to do this. Here is what I am guessing.
while(/*some condition on the data*/)
try
{
objWithString.ExtractData();
}
catch (Exception e)
{
if(e is EndOfStreamException)
{
break;
}
else
throw e;
}
}
That will work, but it would be better to catch the specific exception than to do the test at runtime, ie.
I’m not entirely sure if “break” will work inside a catch clause. If not, you may have to extract this into a method and use “return”.
Generally using exceptions for flow control is considered poor design, since exceptions are intended for “exceptional” conditions and reaching the end of the stream is normal and expected, not exceptional. Of course, if you have no control over the implementation of the stream then you have to go with this approach.