Program logic bugs vs input/environmental errors

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Sat Oct 4 03:29:47 PDT 2014


On 10/2/14 2:45 AM, Jacob Carlborg wrote:
> On 01/10/14 21:57, Steven Schveighoffer wrote:
>
>> ./progThatExpectsFilename ""
>>
>> -Steve
>
> It's the developer's responsibility to make sure a value like that never
> reaches the "File" constructor. That is, the developer of the
> "progThatExpectsFilename" application that uses "File". Not the
> developer of "File".

Then what is the point of File's constructor throwing an exception? This 
means, File is checking the filename, and I have to also check the file 
name.

> Although, I don't see why you shouldn't be able to pass an empty string
> to "File". You'll just get an exception, "cannot open file ''".

Right, that is fine. If you catch the exception and handle the result 
with a nice message to the user, that is exactly what should happen.

If you forget to catch the exception, this is a bug, and the program 
should crash with an appropriate stack trace.

Note 2 things:

1. You should NOT depend on the stack trace/Exception to be your error 
message.
2. File's ctor has NO IDEA whether throwing an exception is going to be 
a bug or a handled error condition.

I would say, as soon as an exception is thrown and is not caught by user 
code, for all intents and purposes, it becomes an Error.

-Steve


More information about the Digitalmars-d mailing list