powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не выполняется код в блоке с try { }?
10 сообщений из 10, страница 1 из 1
Почему не выполняется код в блоке с try { }?
    #32955043
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Возникла проблема с try-catch на стадии компиляции. Есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
private void Page_Load(object sender, System.EventArgs e)
{
	if (!this.Page.IsPostBack)
	{
		this.textDateB.Value = DateTime.Now.AddDays(- 7 ).ToString("d");
		this.textDateE.Value = DateTime.Now.AddDays( 7 ).ToString("d");
	}	
	DateTime DateB, DateE;
	try
	{
		DateB = System.Convert.ToDateTime(this.textDateB.Value);
		DateE = System.Convert.ToDateTime(this.textDateE.Value);
	}
	catch (Exception err) 
	{
		// на время отладки, потом заменить на сообщение 
		// об ошибке при вводе даты:
		Response.Write(err.Message);   
	} 
	..................
	sqlCmd.Parameters.Add("@DateTimeB", DbType.DateTime).Value = DateB;
	// !!!!!!!!!!!!!! Вот здесь ругается:
	// Use of unassigned local variable 'DateB'

	sqlCmd.Parameters.Add("@DateTimeE", DbType.DateTime).Value = DateE;
	// !!!!!!!!!!!!!! Вот здесь ругается:
	// Use of unassigned local variable 'DateE'
	.................
}
Когда блок try - catch убираю или просто просто перемещаю за ее пределы следующий код:
Код: plaintext
1.
DateB = System.Convert.ToDateTime(this.textDateB.Value);
DateE = System.Convert.ToDateTime(this.textDateE.Value);
то компилируется и выполняется нормально. Что я здесь делаю не так?
Заранее спасибо.
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955109
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык правильно ругается.
если произошла ошибка, которая корректно обработалась, какую дату ты собираешься передавать в sqlCmd?!

либо перенеси передачу параметров в блок try, либо в catch задай альтернативную дату
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955154
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что ругается то при компиляции, а не при выполнении приложения, т.е. еще не известно, как будет обрабатываться сообщение об ошибке, может я в catch { } пропишу досрочное завершение работы скрипта.
Да и при первоначальном запуске страницы ошибка конвертации не возникает, проверял убрав try-catch, т.е. вроде он должен выполнить код в блоке try корректно. Эту обработку ставлю на случай, если пользователь введет даты некорректно. Или я что-то не догоняю
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955178
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компилятор ругается на использование неинициализированных переменных.
Попробуй написать
Код: plaintext
1.
2.
DateTime DateB = DateTime.Now;
DateTime DateE = DateTime.Now;

Судя по коду, проблем это не создаст, а для компиллера переменные будут инициализированы.

Сергей
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955212
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильно говорит gerss, сначала надо инициализировть переменные (вобщем и компилятор тебе сообщает о том же )
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955262
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, получилось! :-)
Но только все равно не пойму, например такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
try
{
	DateB = System.Convert.ToDateTime(this.textDateB.Value);
}
catch (Exception err) 
{
	............  // Вывод сообщения об ошибке
	return;
} 
....................
При корректной конвертации переменная DateB будет инициализирована, а если нет, то она и не нужна будут вообще, т.к. программа завершается.
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955546
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так компилятору сие неизвестно. Он видит, что код инициализации может не выполниться и считает, что переменная может быть не инициализирована. Он же всю логику работы программы не отслеживает...

Сергей
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955577
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Какой-то не доученный компилятор, отследить то, что переменная может оказаться не инициализированной хватает ума, а дальше нет
Спасибо за помощь. Я думал что ошибка в самом применении обработки исключений.
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955719
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
компилятор-то нормальный, а вот логика в примере - отсутствовала
сам подумай, зачем делать обработку исключения при преобразовании даты, если потом, при удачно обработанном исключении, произойдет ошибка при передачи не понятно чего в качестве параметра sql-комманды
...
Рейтинг: 0 / 0
Почему не выполняется код в блоке с try { }?
    #32955734
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но у меня же прописано:
Код: plaintext
1.
2.
3.
4.
catch (Exception err) 
{
	............  // Вывод сообщения об ошибке
	return;
}
т.е. неинициализированная переменная использоваться не будет
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не выполняется код в блоке с try { }?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]