dirEntries throws exception on broken symlinks

dennis dennisr at visi.com
Sun Jan 5 22:20:36 PST 2014


On Sunday, 5 January 2014 at 21:33:56 UTC, FreeSlave wrote:
> You must not cast base class to derived class, when you don't 
> know actual type (and even if you know exact type it's still 
> bad practice to cast instance of more generic type to more 
> specific one). Use multiple catch statements instead:
>
> catch(FileException o)
> {
> //handle FileException
> }
> catch(Exception o)
> {
> //handle all other types of exceptions
> }
>
> About dirEntries, you need to move your try/catch statements 
> into loop somehow. You probably should save result of 
> dirEntries to variable and then make manual loop instead of 
> foreach. Result of dirEntries is lazy, so it will not throw 
> exception when you just get it.
>
> It may look like
>
> auto entries = dirEntries(your args);
> while(!entries.empty)
> {
>     try
>     {
>         entry = entries.front;
>         //do your stuff
>     }
>     //"catch" statements
>     finally
>     {
>         entries.popFront();
>     }
> }

Thank you for the quick feedback.  Your explanation of the two 
problems works for me.


More information about the Digitalmars-d-learn mailing list