I think C# 6 has exception filters; interesting that they took so long. VB was also on the right-ish track with optional parameters. It's hilarious, in hindsight, how terribly wrong the C# design was on that feature. And C# still got it wrong by not providing a way to indicate the lack of value, instead of compiling a default into the callsite.