Хобрук: Ваш путь к мастерству в программировании

Обработка исключений важна для следующего кода

Я скопировал следующий код из здесь и здесь. Я хочу знать, требуется ли обработка исключений для следующего кода? Что произойдет, если исключение возникнет до закрытия соединения с БД, поэтому я думаю, что здесь важно иметь try-catch.

Пожалуйста, выскажите свое мнение?

using System; 
using System.Data; 
using System.Data.SqlClient; 


class OutputParams 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 

    using( SqlConnection cn = new SqlConnection("server=(local);Database=Northwind;user id=sa;password=;")) 
    { 
        SqlCommand cmd = new SqlCommand("CustOrderOne", cn); 
        cmd.CommandType=CommandType.StoredProcedure ; 

        SqlParameter parm= new SqlParameter("@CustomerID",SqlDbType.NChar) ; 
        parm.Value="ALFKI"; 
        parm.Direction =ParameterDirection.Input ; 
        cmd.Parameters.Add(parm); 

        SqlParameter parm2= new SqlParameter("@ProductName",SqlDbType.VarChar); 
        parm2.Size=50; 
        parm2.Direction=ParameterDirection.Output; 
        cmd.Parameters.Add(parm2); 

        SqlParameter parm3=new SqlParameter("@Quantity",SqlDbType.Int); 
        parm3.Direction=ParameterDirection.Output; 
        cmd.Parameters.Add(parm3);

        cn.Open(); 
        cmd.ExecuteNonQuery(); 
        cn.Close(); 

        Console.WriteLine(cmd.Parameters["@ProductName"].Value); 
        Console.WriteLine(cmd.Parameters["@Quantity"].Value.ToString());
        Console.ReadLine(); 
    } 
}

Ответы:


1

Директива using расширяется как try...finally, поэтому имеет смысл вложить ее в блок try...catch.

P.S: нет необходимости использовать cn.Close(), так как блок finally делает это.

26.05.2013
  • Итак, вы имеете в виду, что требуется блок try-catch, и я могу закрыть соединение внутри предложения finally? 26.05.2013
  • см. эту ссылку: stackoverflow. ком/вопросы/13082590/ 26.05.2013
  • @sharonHwk Вам не нужно пытаться/поймать/наконец-то. Просто используйте using и не звоните cn.Close(). 26.05.2013
  • @MatthewWatson, что случится, если есть исключение. Как я узнаю, что вызвало это, если у нас нет блока catch? 26.05.2013
  • @sharonHwk Обычно исключения следует перехватывать на более высоком уровне. Код более высокого уровня может перехватывать исключения и регистрировать их или что-то еще. Вы должны перехватывать исключение только в том случае, если знаете, как на него реагировать. Конечно, если это ваш основной программный метод, то он имеет место в нужном месте, но мне он кажется тестовым кодом. 26.05.2013
  • Новые материалы

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..