When I read well written code that checks to make sure all the input is of the correct format and type, and also catches all the things that possibly could go wrong, I find it difficult to understand the core of what the program is doing. It seems protection against the non-normal case obscures the normal case.
This includes beginning and ending of array special cases, try-catch, using, handling null, 0, "", and all the other strange things.
How can I write code that is clear, but isn't cluttered by non-normal events??
To make this a little more concrete, how can I do this in C#?