Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885

Некорректный выход из программы при возникновении ошибки

08.02.2018, 21:25. Показов 1531. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В конструкторе классе
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public DbOle(String DBname)
{
  connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\\\" + DBname);
  try
  {
    connection.Open();
 }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message, "Ошибка подключения к базе данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
 
  }
  finally
  {
    connection.Close();
  }
}
идет проверка наличия базы данных. В методе
C#
1
2
3
4
5
6
7
private void FormMain_Load(object sender, EventArgs e)
{
  DbOle clDb = new DbOle("DBgui.mdb");
  string[] strSelect = { "SELECT * FROM tblContact", "SELECT * FROM tblPhone", "SELECT * FROM tblTypePhone" };
  string[] strNameTable = { "Contact", "Phone", "TypePhone" };
  clDb.FillDataSet(strSelect, strNameTable, dgvContact);
}
в режиме Debug окно с сообщением об ошибке появляется на фоне формы, но почему-то корректного выхода из программы не происходит, выполняется дальше метод FillDataSet и возникает исключение. Если после Application.Exit(); поставить Environment.Exit(1); то исключения не возникает. При этом без отладки (Ctrl+F5) такого эффекта не возникает.
В связи с этим возникли следующие вопросы:
1. Как для всех режимов отладки сделать так, чтобы при ошибке не возникало исключение?
2. Можно ли сделать так:
- проверяется подключение;
- форма не отрисовывается и приложение закрывается, т.е. проверить подлкючение до Form_Load. Проект прикрепил.
Вложения
Тип файла: zip DBgu.zip (28.8 Кб, 2 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2018, 21:25
Ответы с готовыми решениями:

Возможен ли автоматический перезапуск программы при возникновении ошибки?
Здравствуйте, при решении уравнений возникла такая проблем, что при решении уравнений со сложными интегралами возникает ошибка сходимости...

Вылетает приложение при возникновении ошибки
Доброго всем времени суток! Вот есть приложение по работе с MySQL. Тему эту мы разобрали, и вроде все прекрасно. Одно маленькое...

Возвращение к условию при возникновении ошибки
Добрый день! Есть вот такой код: On Error GoTo er: G = MsgBox("Óäàëèòü çàïèñü?", vbQuestion + vbYesNo,...

7
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
08.02.2018, 22:46
Как то через непонятно что архитектура приложения. Получается, что какой-то левый класс закрывает приложение, которое открывает не он.
Лучше в конструкторе формы вызвать этот класс, но вот исключение пробросить наружу в конструктор формы. И уже форма корректно закроется до начала Form_Load()
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
08.02.2018, 23:36
Цитата Сообщение от tumanovalex Посмотреть сообщение
Можно ли сделать так:
- проверяется подключение;
- форма не отрисовывается и приложение закрывается, т.е. проверить подлкючение до Form_Load.
Да. Делайте проверку в Program.cs.
0
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
09.02.2018, 10:46  [ТС]
Сделал проверку в Program.cs, форма все равно загружается. Мне очень нужна помощь в изучении работы с классами, поскольку я первый раз создаю класс. Я не смог разобраться, как передать экземпляр класса, созданный в файле Program.cs, в метод Form_Load. Мне нужно для дальнейшей работы использовать connection и методы экземпляра класса clDb в классе Form. Проект с проверкой в Program.cs прикрепил.
Вложения
Тип файла: zip DBgu2.zip (28.8 Кб, 1 просмотров)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.02.2018, 17:51
В событии Load формы категорически не следует писать потокоопасный код. Для этого существуют другие события (например Activate с флажком для первого создания объекта)
0
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
12.02.2018, 16:34  [ТС]
Я раньше не пытался даже углубиться в C#, поэтому многого не знаю. Возникли следующие вопросы:
- что значит "потокоопасный код"?
- как определить, является ли код потокоопасным?
- почему код в Load потокоопасный, а тот же код в Activate будет потокобезопасным?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
12.02.2018, 23:17
https://bibliofond.ru/view.aspx?id=600434
0
95 / 15 / 3
Регистрация: 09.07.2009
Сообщений: 885
13.02.2018, 18:35  [ТС]
Спасибо, посмотрю

Добавлено через 18 часов 12 минут
Не нашел в свойствах формы Activate с флажком для первого создания объекта. Есть свойство Activated. Подскажите, пожалуйста, где находится это свойство и флажок
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2018, 18:35
Помогаю со студенческими работами здесь

Как завершить приложение при возникновении критической ошибки?
Всем здравствуйте. procedure TFormMain.FormCreate(Sender: TObject); var errCom: integer; begin errCom:= 0; try ...

Запись в файл с откатом при возникновении ошибки/исключения
Добрый день! Такой вопрос: допустим идет построчная запись в файл 1000-чи строчек. Допустим на 501-ой вылетает исключение, стоит трай-кетч....

Перезагружается ноутбук при возникновении ошибки в Visual Studio 2010
при работе в visual studio 2010.если возникает ошибка в программе ноутбук перезагружается сам собой,меня это уже достало ,что можно...

Порядок событий в поле со списком при возникновении ошибки 3126
Здравствуйте! Такая ситуация: В форме есть поле со списком, ввод разрешен, если выбрать какое-то значение, а потом его стереть,...

ПРи возникновении ошибки в Js клиент не показывает в какой строке это
такая вот проблемка: ПРи возникновении ошибки в js клиент не показывает в какой строке это произошло?? :what?: протсо выдает: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru