| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qua Nov 16, 2011 3:20 pm Assunto: Tratamento de erros. [RESOLVIDO] |
|
|
Salve pessoal do Active Delphi,
Me perdoem se, por acaso, estou repetindo este tópico. Tentei localizar algo que se encaixasse no padrão do que estou tentando aprender e não consegui;
Estou começando a tratar os erros que minha aplicação gera. Pesquisei e estou estudando ainda como funciona o conceito e tals.
Eu gostaria de uma ajuda do pessoal do fórum, quanto a esse primeiro erro.
Tenho aqui, a classe do erro e o erro propriamente dito.
Tipo: EIdConnectTimeOut
Erro: Connect Timed Out
Na aplicação, uso um Try e um except para poder manipular essa mensagem.
Nesse caso, como eu faria pra tratar SOMENTE esse erro? E não os erros que são gerados caso a conexão não seja 100%?
| Código: |
try
FrmFormulario.FTP.Connect(true,10000);
FrmFormulario.StatusBar1.Panels[2].Text := '';
Except on E:exception do
ShowMessage('Erro na conexão com o servidor FTP!! Verifique.' + #13 + #13 +
'Tipo do erro: ' + e.ClassName + #13 +
'Endereço do erro: ' + FrmFormulario.Name + #13 +
'Erro: "'+e.message+ '"');
|
Fico no aguardo pessoal.
Editado pela última vez por Djarum em Qua Nov 16, 2011 3:57 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Nov 16, 2011 3:26 pm Assunto: |
|
|
Experimente desta forma:
| Código: | try
FrmFormulario.FTP.Connect(true,10000);
FrmFormulario.StatusBar1.Panels[2].Text := '';
except
on E: Exception do
if E is EIdConnectTimeOut then
ShowMessage('Timeout')
else
ShowMessage('Outro erro: ' + E.Message);
end; |
Espero que ajude.
Editado pela última vez por imex em Qua Mar 08, 2023 10:44 am, num total de 2 vezes |
|
| Voltar ao Topo |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qua Nov 16, 2011 3:30 pm Assunto: |
|
|
Boa tarde Imex,
Ele me dá:
| Código: |
[Error] UFormulario.pas(206): Undeclared identifier: 'EIdConnectTimeOut'
|
Como?
rs |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Nov 16, 2011 3:39 pm Assunto: |
|
|
Boa tarde
Experimente adicionar a unit IDException a clausula uses do seu form. |
|
| Voltar ao Topo |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qua Nov 16, 2011 3:43 pm Assunto: |
|
|
Problema MAIS que resolvido!
Obrigado Imex pelo auxilio!! |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Nov 16, 2011 11:33 pm Assunto: |
|
|
Outra maneira interessante, segundo gambit, um dos mantenedores do repositório da indy é esta, recomendado a mim por ele:
| Código: |
if E is EIdSocketError then
case EIdSocketError(E).LastError of
10054: begin
Application.MessageBox('Seu captcha e consequentemente sua sessão com o servidor peer da Receita Federal expirou.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
LoadCapcha(IdHTTP1, Image1.Picture);
end;
10053: Application.MessageBox('Houve uma falha de conexão de número #10053 com a internet.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
10060: Application.MessageBox('Ocorreu uma falha na conexão de "Tempo Esgotado" de número #10060.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
10061: Application.MessageBox('Houve uma falha de "Conexão recusada" de número #10061 pelo servidor.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
11004: Application.MessageBox('Houve uma falha na conexão de número #11004 com a internet.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
end;
|
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I
Editado pela última vez por johnny-walker em Sex Jul 18, 2014 10:54 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qui Nov 17, 2011 7:45 am Assunto: |
|
|
Pra cada erro, uma mensagem?
É isso? |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Nov 17, 2011 10:25 am Assunto: |
|
|
Isto foi feito para mim ter a origem do erro, pelo menos dos principais que dão maiores dores de cabeça, não são necessários todos, como tb há outras formas de vc saber tb se o programa não encontrou a página que dá a mensagem 404 error e outras maneiras, no meu caso eu precisei ser mais preciso, pois precisava saber se o servidor recusou a conexão, se o tempo esgotou-se e etc., pois estes eram os erros mais comuns na minha aplicação. Neste caso aí você pode criar uma rotina genérica.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I
Editado pela última vez por johnny-walker em Seg Jun 05, 2017 10:26 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qui Nov 17, 2011 10:30 am Assunto: |
|
|
É,
Essa é uma forma para melhorar o programa.
Se tivéssemos uma lista com todos os erros, seria mais fácil, porém, sem graça nenhuma continuar qualquer projeto... rsrs
Os erros mais comuns aqui nessa aplicação é quando o IP do servidor FTP está errado ou quando o cabo de rede está desconectado. Pra esses, usei o modo trivial e está funcionando direitinho.
Obrigado pela dica!
Um abraço a todos que ajudaram! |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Nov 17, 2011 11:12 am Assunto: |
|
|
Disponha amigo, espero que você consiga fazer o que quer.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
|