Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Exception ex, ex.Errors нету...... 
:(
    Опции темы
lankin
Дата 10.9.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



В общем в чем вопрос: поставил сверху using System.Data.SqlClient
в мсдн-ке написано, что чтобы допытаться до члена исключения под названием Class - нужно взять сделать типа вот так:

ex.Errors[i].Class

Так вот это Errors я и не вижу, даже подрубив библиотеку. Почему?
PM MAIL   Вверх
lankin
Дата 10.9.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



всё, разобрался. Оказывается я пытался с класса Exception получить член Class. А надо было привести к System.Data.SqlClient.SqlException. И только тогда появился Errors у него smile 
PM MAIL   Вверх
source777
Дата 10.9.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



а где код?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
QryStaL
Дата 10.9.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Код

using System.Data.SqlClient;

namespace Test
{
    class T
    {
        void Example()
        {
            try
            {
                //
            }
            catch (SqlException e)
            {
                if (e.Errors.Count > 0)
                {
                    SqlError err = e.Errors[0];
                }
            }
        }
    }
}



--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
lankin
Дата 10.9.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



Код

static public void Report(Exception ex, params string[] arg)
        {
            if(ex.Message.Length == 0)
                return;
            //****
            for (int i = 0; i < ((System.Data.SqlClient.SqlException)ex).Errors.Count; i++)
            {
                if ((((System.Data.SqlClient.SqlException)ex).Class == (byte)11) &&
                    ((System.Data.SqlClient.SqlException)ex).Errors[i].LineNumber == 0 &&
                    ((System.Data.SqlClient.SqlException)ex).Errors[i].Number == 0 &&
                    ((System.Data.SqlClient.SqlException)ex).Errors[i].Message.Contains("cancelled by user"))
                    return;
            }
    }


раньше я пытался сразу у ex.Errors найти, а надо было ((System.Data.SqlClient.SqlException)ex).Errors
PM MAIL   Вверх
QryStaL
Дата 10.9.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



А не лучше ли так:

Код

        public static void Report(Exception ex, params string[] arg)
        {
            if (ex.Message.Length == 0)
                return;
            //****
            System.Data.SqlClient.SqlException sqlEx = ex as System.Data.SqlClient.SqlException;
            if (sqlEx != null)
            {
                for (int i = 0; i < sqlEx.Errors.Count; i++)
                {
                    if ((sqlEx.Class == (byte)11) &&
                        sqlEx.Errors[i].LineNumber == 0 &&
                        sqlEx.Errors[i].Number == 0 &&
                        sqlEx.Errors[i].Message.Contains("cancelled by user"))
                        return;
                }
            }
        }



--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
lankin
Дата 10.9.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



а в чем разница?
PM MAIL   Вверх
QryStaL
Дата 10.9.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



1. Лучше выглядит.
2. (System.Data.SqlClient.SqlException)ex - эта строчка может кинуть исключение
3. Производительнее.

Это сообщение отредактировал(а) QryStaL - 10.9.2008, 17:40


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
lankin
Дата 10.9.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

Репутация: нет
Всего: нет



Производительнее насколько? И в чем оно производительнее?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.