Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2018, 17:47   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Что то не то с исключением

Здравствуйте. Помогите пожалуйста разобраться с куском кода ...
Код:
if (target!=null)
	try
	{
		if (target.IsAlive)
			destination=target.Location;
		else
			throw null; // какого хрена не выпадает в catch ??
	} catch
	{
		// здесь свои мансы с данными
	}
else {}
Подчёркнутая строка - это собственно и есть проблема, согласно отладчику; без отладчика тоже самое: ссылка на объект не указывает на экземпляр объекта.
Кагбэ я понимаю, что объект target может исчезнуть в любой неконтролируемый момент времени, поэтому взял в try.
destination заведомо определён, но проверил, согласно отладчику там тоже всё нормально. И если было бы дело в нём - всё равно всё тот же вопрос ...

Мне всё равно, что произошло с объектом target, поэтому выкидываю null, и если дело именно в этом - то всё равно вопрос: почему не выпадает в catch ?
Ну и раньше, разумеется, это работало исправно.

Что тут не так ?
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 29.04.2018 в 17:49.
OmegaBerkut вне форума Ответить с цитированием
Старый 29.04.2018, 21:47   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Это не плюсы и что угодно кидать в качестве исключений нельзя.
throw null в итоге приводит к тому, что создаётся NullReferenceException (в throw не положено передавать null, так что это уже он ругается, а не исходный код), посему лучше самому хотя бы простой Exception бросать, нежели на такое поведение рассчитывать. Вот почему не идёт в catch - не знаю. В студии есть настройки отладчика и там можно указать на какие исключения реагировать, даже если они в блоке try, но по идее на запуск без отладчика это не должно влиять.
В любом случае, делается дикая дичь. Тут блокировки нужны или еще какое разруливание многопоточности, чтобы внезапно объект не пропадал, а не экзепшены.
pu4koff вне форума Ответить с цитированием
Старый 30.04.2018, 01:43   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
дикая дичь
Я знаю ... У меня условия такие, сделать всё через наследования, абстракции, виртуальные функции, и прочие дикие дичи (для этого случая).
У меня каждый объект имеет свою "независимую" от других объектов цель, и пытаться что то синхронизировать - это выстреливать себе даже не в ногу, а в голову, из дробовика.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать отпуск за исключением выходных дней Alecsandrovih Microsoft Office Excel 5 24.10.2013 13:54
Выбор периода с исключением alexvav БД в Delphi 10 18.07.2012 13:16
Связанные списки с исключением IOPNR Microsoft Office Excel 2 01.11.2011 08:55
CSS селектор с исключением Никки HTML и CSS 1 15.07.2011 19:20
Проблема с исключением try.....Except.... X-LEV-X Общие вопросы Delphi 1 28.07.2009 19:08