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

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

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2012, 12:50   #691
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Перехват ошибок приложения в сообщении #69
Такое имеется, я как раз привёл код в посте. Не выдерживает этот обработчик или где-то есть другая лазейка.
Shouldercannon вне форума Ответить с цитированием
Старый 30.12.2012, 15:06   #692
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Такое имеется, я как раз привёл код в посте. Не выдерживает этот обработчик или где-то есть другая лазейка.
Не такое. Ты отлавливаешь только ошибки сокета, ...в примере отлавливаются ошибки приложения, но обрабатываются только сокетные. Легко можно добавить обработку любых ошибок приложения.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 30.12.2012, 20:32   #693
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Так делаю отлов всех ошибок приложения
Код:
procedure TFormMain.SocketException(Sender: TObject; Error: Exception);
begin
  if (Error.ClassName = 'ESocketError') then
  begin
    UpdateUserMas;
    UpdateUserList;
  end
  else SLError.Add(Format('%s - %s', [FormatDateTime('dd.mm.yyyy hh:mm:ss', Now), Error.Message]));
end;
Для сокетных ошибок определённые действия, а все остальные просто добалвяю в StringList (лог-файл). Получается что в else нужно ловить ошибку, которая рояет сервер?
Shouldercannon вне форума Ответить с цитированием
Старый 30.12.2012, 23:57   #694
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Shouldercannon, ты выполняешь SocketException только для сокетов, а если вылетают ошибки приложения (обращения к спискам, памяти и пр., не синхронизации сокетов), то твоя процедура не выполняется. В примере Application.OnException, ...посмотри внимательно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 31.12.2012, 11:34   #695
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Сравним
Код:
// Ваш код
...
procedure SocketException(Sender: TObject; Error: Exception);
  private
    { Private declarations }
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  // пусть обработка ошибок идет через специальную процедуру
  Application.OnException := ClException;
end;

procedure TForm1.ClException(Sender: TObject; Error: Exception);
begin
  If (Error.ClassName = 'ESocketError') then
    Begin
      // снова пытаемся подключиться через таймер 1 раз в секунду
      ConnectTimer.Enabled := True;
      // меняем надпись клавиши
      ClientBtn.Caption:='Ожидание...';
    end
  else Application.ShowException(Error);   // ошибки не сокета пусть показывает
end;

// Мой код
...
procedure SocketException(Sender: TObject; Error: Exception);
  private
    { Private declarations }
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := SocketException;
end;

procedure TFormMain.SocketException(Sender: TObject; Error: Exception);
begin
  if (Error.ClassName = 'ESocketError') then
  begin
    UpdateUserMas;
    UpdateUserList;
  end
  else SLError.Add(Format('%s - %s', [FormatDateTime('dd.mm.yyyy hh:mm:ss', Now), Error.Message]));
end;
Не ужели всё упирается в название процедуры? Не понимаю.
Shouldercannon вне форума Ответить с цитированием
Старый 31.12.2012, 21:09   #696
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Shouldercannon, прошу прощения, я не увидел где ты прописал привязку, подумал на какую-то процедуру, которой я не встречал, ...мало ли.

В секции Else прописывай обработку другого типа ошибок приложения.

С наступающим Новым Годом!
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 31.12.2012, 21:50   #697
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Вот та самая ошибка из-за которой падает сервер и она относится к сокетным, в ответ на эту ошибку я обновляю список юзеров. Ил я не в ту сторону смотрю?
Изображения
Тип файла: gif 6.gif (6.9 Кб, 92 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 31.12.2012, 22:00   #698
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Запуск из под Delphi? ...или самостоятельно через исполнительный файл?

...если что, завтра посмотрим.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 02.01.2013, 00:14   #699
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Запуск из под Delphi
Shouldercannon вне форума Ответить с цитированием
Старый 02.01.2013, 00:33   #700
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Запуск из под Delphi
Среда и будет показывать ошибки, ...перехват происходит только при непосредственном запуске исполнительного файла.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Создание клиент-сервера Pblog Обсуждение статей 0 03.10.2007 17:12
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл Pblog Обсуждение статей 0 31.08.2007 20:00
обновление в блоге - USB Холодильник Pblog Обсуждение статей 0 25.06.2007 14:13
обновление в блоге - О ярлыках Pblog Обсуждение статей 0 27.05.2007 03:17