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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Всегда ли нужно проводить приведение/конвертацию, типов в блоке try/catch? 
:(
    Опции темы
ivashkanet
  Дата 20.6.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Пришло письмо от заказчика с требованием проводить конвертацию типов в блоке try/catch.
А если я 100% уверен, что конвертация не вызовет ошибок. 

Все дело в посыле события и принятии его. В Framework-е заказчика определены свои собственные события и обработчики (связь идет через внешнюю базу данных), которые могут принимать только аргументы события типа EventArgs, но потом его можно привести к нужному типу.

Ведь это мой собственный метод посылает событие. Мой же и принимает.

P.S. Или все дело во внешней базе, которая, потенциально, может передать не то событие??? Именно поэтому они и настаивают на проверке??? 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 20.6.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Может, у него в библиотеке куча унаследованных классов типа BlablablaEventArgs... Или он просто хочет перестраховаться сам не знает от чего smile

З.Ы. пять копеек: есть два варианта приведения типов: явный (ставим нужный тип в скобки перед именем переменной) и неявный (оператор as), первый кидает иксепшн, второй - нет (но возвращает null в случае некорректного приведения типов).  


--------------------
user posted image
PM MAIL WWW   Вверх
Дрон
Дата 20.6.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Цитата(ivashkanet @  20.6.2006,  11:47 Найти цитируемый пост)
Пришло письмо от заказчика с требованием проводить конвертацию типов в блоке try/catch.

Я предпочитаю испрользовать as и сравнивать результат с null. Как-то красивее смотрится.

В принципе, я бы лучше проверял. Но тогда остаётся вопрос -- а что мы делаем, если к нам не тот тип пришёл? 


--------------------
Да. Именно так.
PM   Вверх
ivashkanet
Дата 20.6.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Дрон @  20.6.2006,  14:29 Найти цитируемый пост)
а что мы делаем, если к нам не тот тип пришёл? 

Эт я знаю: пишу в лог траблу и не замечаю ее  smile  
PM MAIL WWW ICQ   Вверх
Ch0bits
Дата 20.6.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


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

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



PM WWW   Вверх
Дрон
Дата 20.6.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Цитата(Ch0bits @  20.6.2006,  15:56 Найти цитируемый пост)
As is или история о том как не надо писать код  

После беглого просмотра я с автором не согласен. 
Поскольку на null параметр проверять нужно в 99% случаев, то при использовании as мы убиваем двух зайцев сразу: проверяем не null ли был нам передан изначально + проверяем а тот ли тип нам передали.
В случае же с () нам нужно два отдельных действия: 1) проверка на null и 2) проверка исключения.

Добавлено @ 15:21 
Вопрос самодисциплины... Вот индусы так те вообще никогда ничего не проверяют и статья как будто на них и расчитана. 


--------------------
Да. Именно так.
PM   Вверх
mr.DUDA
Дата 20.6.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(Дрон @  20.6.2006,  15:20 Найти цитируемый пост)
В случае же с () нам нужно два отдельных действия: 1) проверка на null и 2) проверка исключения.

таки да!  smile 

совсем забыл, что приведение null к любому ссылочному типу срабатывает без исключения  smile  


--------------------
user posted image
PM MAIL WWW   Вверх
arilou
Дата 21.6.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

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



Цитата

При этом делается два очень опасных предположения:
- Я все делаю верно. (Ведь я все проверил!)
- Со временем не произойдет изменений, которые приведут к ошибке при приведении. (Ведь я-то точно знаю!)
А зря. Это в корне неверные предположения.


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

и под этим тоже
Цитата

Таким образом даже самые продуманные и ответственные предположения могут оказаться неверными по недомыслию или вследствие изменения обстоятельств. А цена ошибки заранее никогда неизвестна. В лучшем случае вы обрекаете себя или кого-то другого на несколько часов виртуального секса с компьютером. smile А в худшем – подставляете фирму, в которой работаете, на деньги, и, возможно, на немалые деньги. 
 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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