Вложенные блоки try/catch
Я несколько сомневаюсь в использовании вложенных блоков try/catch.
Ситуация, которая заставляет меня задуматься, - это следующая ситуация. Некоторые примеры кода для иллюстрации:
SqlConnection conn = new SqlConnection(connectionString);<br />conn.Open();<br />SqlTransaction trans = conn.BeginTransaction();<br /><br />try<br />{<br />string query = "query goes here";<br />SqlCommand command = new SqlCommand(query, conn, trans);<br />// add parameters<br />command.ExecuteNonQuery();<br />trans.Commit();<br />}<br />catch <br />{ <br />trans.Rollback();<br />}<br />finally<br />{<br />if(conn != null)<br />{<br />conn.Close();<br />conn.Dispose();<br />}<br />}
Этот блок имеет 1 блок try/catch, но проблема заключается в "conn.Открытая линия. При возникновении сетевой ошибки Конн.Open() вызовет исключение. Поставив управление кораблем.Open() в блоке try/catch сделает недействительным код, который теперь находится в предложениях catch/finally.
Таким образом, я могу использовать 2 последовательных блока try/catch или следующую конструкцию. Что вы, люди, думаете?
AnkitGoel.com
Пожалуйста, запишите свой код с правильным форматированием. Она совершенно нечитабельна. поэтому я ничем не могу помочь.