On Saturday, 3 June 2017 at 10:21:03 UTC, Paolo Invernizzi wrote:
It doesn't seems to me that the trends to try to handle somehow, that something, somewhere, who knows when, has gone wild it's coherent with the term "robustness".

That all depends. It makes perfect sense in a "strongly pure" function to just return an exception for basically anything that went wrong in that function.

I use this strategy in other languages for writing validator_functions, it is a very useful and time-saving way of writing validators. E.g.:

try {
    …
    validated_field = validate_input(unvalidated_input);
}

I don't really care why validate_input failed, even if it was a logic flaws in the "validate_input" code itself it is perfectly fine to just respond to the exception, log the failure return a failure status code and continue with the next request.

The idea that programs can do provably full veracity checking of input isn't realistic in evolving code bases that need constant updates.

My "validate_input" only have to be correct for correct input. If it fails because the input is wrong or because the validation spec is wrong does not matter, as long as it fails.

And the fact that the "nice tries" are done at runtime, in production, is the opposite of what I'm thinking is program verification.

Program verification requires a spec.

In the above example the spec could be that it should never allow illegal input to pass, but it could also make room for failing for some legal input.

"false alarm" is a concept that is allowed for in many real world application.

In this context it means that you throw too many exceptions, but that does not mean that you don't throw an exception when you should have.

I'm trying to exactly do that, I like to think myself as a very pragmatic person...

What do you mean by "pragmatic"? Shutting down a B2B website because one insignificant request-handler fails on some requests (e.g. requesting a help page) is not very pragmatic.

Pragmatic in this context would be to specify which handlers are critical and which ones are not.

Reply via email to