try/catch idiom in std.datetime

Jouko Koski joukokoskispam101 at netti.fi
Tue Nov 19 23:22:53 PST 2013


"Jacob Carlborg"  wrote:
> On 2013-11-19 18:11, Jouko Koski wrote:
>
>> If the "user level" validation fails, shall we throw or assert or...?
>
> Throw.

Ok. What if the "user" is writing a library code which calls other system 
utilities? If the validation fails, is the answer now assert?

I don't have a definite answer. However, I tend to follow the practice that 
all public API should do validation and throw on failures. I use assert for 
catching my own mistakes in more or less internal stuff.

Usually I don't find separate validation API functions very practical. One 
can forget or ignore to do validation, just like one can fail to check errno 
after a call. Of course, validation is necessary and exceptions can assert 
(sic!) this. It might be more of a personal preference, but often I catch 
exceptions only for error reporting purposes. Exception is an indication of 
an unexpected condition in the program. The solution is to fix the program 
to be prepared for the condition, not trying to fix the condition afterwards 
as the exception has already fired. Not all APIs support this approach.

-- 
Jouko



More information about the Digitalmars-d mailing list