Любые исключения, которые генерируются в выражении инициализации оператора using, распространяются вверх по области метода и стеку вызовов, как и ожидалось.
Однако следует обратить внимание на то, что если в выражении инициализации возникает исключение, то метод Dispose () не будет вызываться для переменной выражения. Это почти всегда то поведение, которое вы хотели бы, так как вы не хотите беспокоиться об удалении объекта, который на самом деле не был создан. Однако может возникнуть проблема в сложных обстоятельствах. То есть, если в конструкторе скрыты несколько инициализаций, а некоторые завершены успешно до того, как было сгенерировано исключение, вызов Dispose в этот момент может не произойти. Однако обычно это не проблема, поскольку конструкторы обычно просты.