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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 00:21   #1
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
Сообщение Отлов ошибок в приложениях

Помню вроде бы есть такая функция... Но название забыл...
К примеру недавно появилось исключение
socket error 10060 connection timed out что это и куда это я понимаю. Вопрос в том как
1) перехватить исключение и не показать его пользователю.
2) понять какое именно исключение что бы к примеру перезапустить indy клиент, иначе после исключения весь цикл крашиться....

Весьма благодарен =)

Последний раз редактировалось Des; 29.04.2009 в 14:36.
Des вне форума Ответить с цитированием
Старый 29.04.2009, 00:43   #2
Виталий Серов
Заснувший
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 213
По умолчанию

Этот код просто обрабатывает ошибку в случае возникновения
try
//действие
except
ShowMessage('Произошла ошибка');
end;

А этот показывает что за ошибка произошла
try
//действие
except
on E: Exception do
begin
Memo1.Lines.Add(e.Message); //тип исключения
end;

Блок "try ... except" и есть "такая функция"

Последний раз редактировалось Виталий Серов; 29.04.2009 в 00:45.
Виталий Серов вне форума Ответить с цитированием
Старый 29.04.2009, 01:30   #3
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Спасибо большое! Будем пробовать!
Des вне форума Ответить с цитированием
Старый 29.04.2009, 13:38   #4
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

У меня чуть чуть проблемка
пишу:
Код:
procedure login;
begin
try
Form1.http1.Get(form_opt.edit_login_adress.Text);
except
on login : Exception do
if Pos('10061',login.Message) <> 0 then begin
ShowMessage('Ошибка № 10061 Не смогли подключиться к серверу');
end
else begin
ShowMessage('Message:'+login.Message+' InstanceSize:'+IntToStr(login.InstanceSize));
//квертиквертикверти
end;
end;
А проблема в том что, сначала 'ошибка' вылетает после if или else (в зависимости от Pos) а потом вызывается стандартная с красным крестиком и у меня получается две ошибки, только одна из них более менее вменяема. так как мне отключить стандартную :D?

Последний раз редактировалось Des; 29.04.2009 в 13:43.
Des вне форума Ответить с цитированием
Старый 29.04.2009, 13:55   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если тестируешь из под Дельфи то стандартная отобразится(если не отключенны исключения)
иначе только твоя должна(если все верно)

запусти сам, ручками, а не через Дельфи
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.04.2009, 14:00   #6
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Без разници.
Стандартное сообщение которое образуется после моего ShowMessage():
Socket error # 10061 Connection refused
Des вне форума Ответить с цитированием
Старый 29.04.2009, 14:03   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так может ошибка идет после твоего сообщения?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.04.2009, 14:11   #8
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так может ошибка идет после твоего сообщения?
В смысле?
Сначала мое появляется:

Код:
ShowMessage('Ошибка № 10061 Не смогли подключиться к серверу');
А после нажатия кнопки Ok, стандартная:
Код:
Socket error # 10061 Connection refused
А мне нужно так чтоб стандартная не появлялась. Помню вроде бы в начале около {$R *.dfm} нужно что то еще прописать и тогда ошибок вообще не будет никаких. Но ведь это отключение всех ошибок, а мне нужно только от Indy
Des вне форума Ответить с цитированием
Старый 29.04.2009, 14:50   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Может с http1 где-то дальше используется. Поставь бряк в начале блока try в процедуре login (F5) и попробуй законнектиться. Потом пройдись пошагово (F8) и смотри где что не так работает. И поменяй on login: Exception на on E: Exception, а то стрёмная какая-то конструцкия с именем процедуры

Кстати "Connection refused" куда более информативное сообщение, чем "Не смогли подключиться к серверу". Лучше оставлять стандартные сообщения об ошибках, или хотя бы точно переводить их. Пользователю-то в принципе пофиг что будет написано в окошке с красным крестиком - главное что программа не работает должным образом, зато потом на форумах появляется "Памагити у меня не работает пишет Программа не смогла подключиться", и поди-догадайся почему - сервер разорвал соединение, отклонил его или вообще интернет отключён или файрвол не выпустил
пыщь
JTG вне форума Ответить с цитированием
Старый 29.04.2009, 15:27   #10
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию Решено!

JTG
Вот для того что бы юзер куда попало не стал жаловаться мне и нужно в перехваченых исключениях донести до юзера мол "Извините нет коннекта, возможные причины...". Выше предоставленный код конечно же будет переделываться и дорабатываться. а login - это для наглядности :D
Ну что ж =), я дальше пошел по F7 и что обнаружил ))). После этого блока, у меня идет еще один блок try, уже собственно с http1.Post, вот в нем то и вызывается мое второе исключение, потому как я программе запретил в файрволе лезть в инет. Но я то думал раз исключение, значит и процедура заканчивается оказалось после исключения мы побежали дальше в лес... Im onto itself fucking пора бороться с ленью

Огромное спасибо!
Des вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отлов горячих клавиш, Builder C++ 6.0 MsF C++ Builder 2 24.02.2009 11:02
Отлов событий Antoha Общие вопросы Delphi 3 26.10.2008 10:20
Отлов кликов мыши LAFUDR Помощь студентам 9 24.05.2008 01:32
Sreen Saver отлов событий Alexoid Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 28.04.2008 15:41
Кодировка в приложениях Horror Общие вопросы .NET 3 16.04.2008 14:23