Получение информации об исключении базы - PullRequest
1 голос
/ 15 января 2009

Я регистрирую ошибки и отправляю себе журналы исключений! Как следующий код

    private void ExceptionForm_Load(object sender, EventArgs e)
    {
        Type exceptionType = _exception.GetType();

        txtErrorMessage.Text = _exception.ToString();

        if (exceptionType == typeof(Sybase.DataWindow.DbErrorException))
        {
             _exception = (Sybase.DataWindow.DbErrorException)_exception;

            txtErrorMessage.Text += "Exception SQL data:" +  exception;
        }

    }

Теперь проблема заключается в следующем. if (exceptionType == typeof (Sybase.DataWindow.DbErrorException)), тогда у _exception есть дополнительные свойства, такие как SqlSyntax, который вышел из строя (например, обновить что-то из таблицы). Проблема в том, как мне отобразить эти данные. Это не в моем исключении, так кажется. exceptiontype = DbErrorException, но я не могу передать свое исключение _exception. Или это плохая практика? Или я должен просто удалить все и установить блок обработки исключений из MS?

Ответы [ 2 ]

4 голосов
/ 15 января 2009

Проблема не в приведении, а в том, что ваша переменная _exception (предположительно) имеет тип Exception. Вам нужно объявить новую переменную правильного типа. Кроме того, есть ли у вас какая-либо причина для использования GetType () вместо «как» или «есть»? Как насчет производных исключений? Попробуйте это:

private void ExceptionForm_Load(object sender, EventArgs e)
{
  DbErrorException specificException = _exception as DbErrorException;
  if (specificException != null)
  {
     txtErrorMessage.Text += "SqlSyntax=" + specificException.SqlSyntax;
  }
}
1 голос
/ 15 января 2009

Похоже, Джон! Не знал об «как» и «есть». Мое _exception действительно имеет тип Exception (потому что я отправляю все свои исключения в эту "форму журнала"). Нужно ли преобразовывать все мои данные в определенный тип исключения, если мне нужны все данные? (например, webexception, socketexception)

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