I do most of my programming these days in C#, though I have ended up learning a little Visual Basic over the years. It never ceases to amaze me how IL manages to support two languages with very different features.
I was surprised to find out the other day that VB allows you to branch from an exception handler back into the code that the handler is guarding, allowing you to write an infinite loop of the form.
Throw New Exception()
Catch ex As Exception
C# doesn’t allow that kind of branching.
static void Main(string args)
throw new Exception();
goto Restart; // Invalid