Как я могу обработать исключение в DataSet.Designer.cs? - PullRequest
0 голосов
/ 17 сентября 2009

Я использую Visual Studio 2008 вместе с C # для доступа к базе данных MySql. К этому моменту я полагался на Visual Studio для создания кода для DataSet, и это, похоже, создало для меня проблему. Если база данных недоступна (то есть не запущена), она выдает «MySqlException is nothandled», «не удается подключиться ни к одному из указанных хостов MySQL».

Мой вопрос: как лучше всего справиться с этим исключением?

Я бы хотел иметь возможность справиться с этим без вмешательства в файл designer.cs, но если это невозможно, тогда подойдет любой способ решения этой проблемы.

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
    [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
    public virtual int Fill(customerDataSet.addressesDataTable dataTable) {
        this.Adapter.SelectCommand = this.CommandCollection[0];
        if ((this.ClearBeforeFill == true)) {
            dataTable.Clear();
        }
// Exception occurs on the line below.
        int returnValue = this.Adapter.Fill(dataTable);
        return returnValue;
    }

1 Ответ

0 голосов
/ 17 сентября 2009

При обработке исключений вы должны поймать исключение в самый ранний момент, когда у вас есть что-то, что вы хотите сделать в ответ на исключение. DataSet - плохое место для обработки недоступности вашей базы данных; как остальные участники вашего приложения будут уведомлены о том, что произошла эта ошибка?

В вашем случае, как вы хотите справиться с этим брошенным MySqlException? В большинстве случаев недоступная база данных будет трудной ошибкой для восстановления. Возможно, вы захотите, чтобы исключение всплыло в текущем процессе и просто отобразило сообщение об ошибке, или вы можете повторить попытку процесса, или вы можете переключиться на другую базу данных.

Мне кажется, что вы, возможно, захотите провести общее чтение с целью исключения и почему существует механизм «throw». Они не просто для того, чтобы раздражать вас писать блоки try-catch!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...