Ну, код не скомпилируется, но я просто проигнорирую это ...
Если я просто посмотрю на строку:
throw new Exception(InvalidoperationException);
Во-первых, согласно MSDN, такого конструктора не существует. Поэтому я предполагаю, что вы имели в виду конструктор: Exception (String msg, Exception innerException). Имея в виду:
бросить новое исключение («блабла», InvalidoperationException);
Исключение, которое выдается, имеет тип Исключение , а не InvalidOperationException . Так что ONLY catch (Exception x) может его поймать.
Если бы вы выбросили InvalidoperationException , чем то, как вы написали порядок уловов, класс Exception будет пойман сначала .
Порядок уловов имеет значение.
Лучший совет, который я могу вам дать - просто попробуйте сами и посмотрите, что произойдет.