Página 1 de 1

Rotina de erros - será exagero?

Enviado: 30 Jun 2016 11:49
por JoséQuintas
Não sei se vou exagerar a rotina de erros, também já serve de modelo.

O que minha rotina de erros faz?
Ela salva o erro no arquivo hb_out.log, e abre no bloco de notas.
Sim só isso.
O nome hb_out.log é porque é o mesmo que o Harbour usa pra erros que não passam pela errorsys, então já fica junto.

O que o aplicativo faz?
Ao ser carregado, se existir hb_out.log, e se existir internet funcionando, me envia esse hb_out.log por email.

Mesmo em máquina sem internet o erro fica registrado.
Quando uma máquina com internet é usada, é enviado o email.
Legal, tudo ok, com ou sem internet, o erro chega aqui.

Agora surgiu uma novidade: mapeamento do servidor sumiu.
Se não tem mapeamento, não tem gravação do erro.
Ok, não tem a ver com o aplicativo, é defeito de rede.

Pensei em registrar mesmo assim.
Pensei na pasta temporária, que é no temp de c:, sempre disponível.
Ao carregar o aplicativo, se tem dirtemp\hb_out.log, acumular no curdir\hb_out.log, e todo restante continua como sempre foi.
Será que é exagero? enviar erro até se o "disco" sumiu?

Rotina de erros - será exagero?

Enviado: 30 Jun 2016 13:13
por Kapiaba
Eu apenas aviso ao usuário assim:

Código: Selecionar todos

//----------------------------------------------------------------------------//
FUNCTION DOSERRO( QUAL )  // ERROS DE REDE...

   PRIVATE FALHA[ 999 ]

   IF QUAL = 0 .OR. QUAL > 120
      QUAL = 999
   ENDIF

   FALHA[ 1 ]  = "NUMERO DE FUNCAO INVALIDA"
   // MUDEI EM: 24/02/2016 Para ficar mais claro a mensagem.
   FALHA[ 2 ]  = "ARQUIVO NAO ENCONTRADO NA PASTA DO PLENO: VERIFIQUE SUA REDE. "+ ;
                 "TEM UMA FALHA DE COMUNICACAO DO SEU COMPUTADOR COM O SERVIDOR "+ ;
                 "DE ARQUIVOS."
   FALHA[ 3 ]  = "CAMINHO OU ARQUIVO NAO ENCONTRADO"
   FALHA[ 4 ]  = "MUITOS ARQUIVOS ABERTOS"
   FALHA[ 5 ]  = "ACESSO NEGADO - LIBERE O ACESSO A PASTA ACIMA - CHAME O TECNICO."
   FALHA[ 6 ]  = "HANDLE INVALIDO - PROBELMAS NO HD."
   FALHA[ 7 ]  = "BLOCO DE CONTROLE DE MEMORIA DESTRUIDO"
   FALHA[ 8 ]  = "MEMORIA INSUFICIENTE - COLOQUE MAIS MEMORIA RAM"
   FALHA[ 9 ]  = "ENDERECO DE BLOCO DE MEMORIA INVALIDO"
   FALHA[ 10 ] = "DISPOSITIVO INVALIDO"
   FALHA[ 11 ] = "FORMATACAO INVALIDA"
   FALHA[ 12 ] = "CODIGO DE ACESSO INVALIDO"
   FALHA[ 13 ] = "DADOS INVALIDOS"
   FALHA[ 14 ] = "RESERVADO PARA USO FUTURO 14"
   FALHA[ 15 ] = "ACIONADOR DE DISCO(DRIVE) INVALIDO"
   FALHA[ 16 ] = "TENTOU REMOVER DO DIRETORIO CORRENTE"
   FALHA[ 17 ] = "DISPOSITIVO NAO E O MESMO"
   FALHA[ 18 ] = "NAO HA MAIS ARQUIVO"
   FALHA[ 19 ] = "DISCO PROTEGIDO CONTRA GRAVACAO - LIBERE O ACESSO DO HD."
   FALHA[ 20 ] = "UNIDADE DE DISCO DESCONHECIDA"
   FALHA[ 21 ] = "IMPOSSIVEL LEITURA DE DISCO - CHAME O TECNICO."
   FALHA[ 22 ] = "COMANDO DESCONHECIDO"
   FALHA[ 23 ] = "INFORMACAO ERRADA(CRC)"
   FALHA[ 24 ] = "COMPRIMENTO DA ESTRUTURA ESTA RUIM"
   FALHA[ 25 ] = "ERRO NA PESQUISA(SEEK)"
   FALHA[ 26 ] = "UNIDADE DE ARMAZENAGEM(MIDIA) DESCONHECIDO"
   FALHA[ 27 ] = "SETOR NAO ENCONTRADO - PROBLEMAS NO HD."
   FALHA[ 28 ] = "ACABOU O PAPEL DA IMPRESSORA"
   FALHA[ 29 ] = "GRAVACAO INVALIDA"
   FALHA[ 30 ] = "LEITURA INVALIDA"
   FALHA[ 31 ] = "FALHA GERAL- CHAME O TECNICO URGENTE."
   FALHA[ 32 ] = "VIOLACAO DE COMPARTILHAMENTO"
   FALHA[ 33 ] = "TENTATIVA DE ACESSAR UM ARQUIVO BLOQUEADO"
   FALHA[ 34 ] = "MUDANCA DE DISCO INVALIDA"
   FALHA[ 35 ] = "TENTATIVA DE ABRIR MAIS ARQUIVOS DO QUE O DEFINIDO NO COMANDO FCBS."
   FALHA[ 36 ] = "ESTOURO NO BUFFER DE COMPARTILHAMENTO."
   FALHA[ 37 ] = "RESERVADO PARA USO FUTURO 37"
   FALHA[ 38 ] = "RESERVADO PARA USO FUTURO 38"
   FALHA[ 39 ] = "RESERVADO PARA USO FUTURO 39"
   FALHA[ 40 ] = "RESERVADO PARA USO FUTURO 40"
   FALHA[ 41 ] = "RESERVADO PARA USO FUTURO 41"
   FALHA[ 42 ] = "RESERVADO PARA USO FUTURO 42"
   FALHA[ 43 ] = "RESERVADO PARA USO FUTURO 43"
   FALHA[ 44 ] = "RESERVADO PARA USO FUTURO 44"
   FALHA[ 45 ] = "RESERVADO PARA USO FUTURO 45"
   FALHA[ 46 ] = "RESERVADO PARA USO FUTURO 46"
   FALHA[ 47 ] = "RESERVADO PARA USO FUTURO 47"
   FALHA[ 48 ] = "RESERVADO PARA USO FUTURO 48"
   FALHA[ 49 ] = "RESERVADO PARA USO FUTURO 49"
   FALHA[ 50 ] = "REDE REQUERIDA NAO SUPORTADA"
   FALHA[ 51 ] = "COMPUTADOR REMOTO NAO ESTA RESPONDENDO"
   FALHA[ 52 ] = "NOME DA REDE DUPLICADO"
   FALHA[ 53 ] = "NOME DA REDE NAO ENCONTRADO"
   FALHA[ 54 ] = "REDE OCUPADA."
   FALHA[ 55 ] = "DISPOSITIVO DE REDE NAO MAIS EXISTENTE"
   FALHA[ 56 ] = "LIMITE DE COMANDOS DA BIOS EXCEDIDO"
   FALHA[ 57 ] = "ERRO DE HARDWARE NA PLACA DA REDE"
   FALHA[ 58 ] = "RESPOSTA INCORRETA DA REDE"
   FALHA[ 59 ] = "ERRO INESPERADO NA REDE - CHAME O TECNICO DE REDE."
   FALHA[ 60 ] = "PLACA REMOTA INCOMPATIVEL"
   FALHA[ 61 ] = "FILA DE IMPRESSAO ESTA CHEIA"
   FALHA[ 62 ] = "NAO EXISTE ESPACO SUFICIENTE PARA O ARQUIVO DE IMPRESSAO."
   FALHA[ 63 ] = "ARQUIVO DE IMPRESSAO ELIMINADO(ESPACO INSUFICIENTE)"
   FALHA[ 64 ] = "NOME DA REDE ELIMINADO"
   FALHA[ 65 ] = "ACESSO NAO PERMITIDO - LIBERE O ACESSO A PASTA ACIMA."
   FALHA[ 66 ] = "TIPO INCORRETO DE DISPOSITIVO DE REDE"
   FALHA[ 67 ] = "NOME DA REDE NAO ENCONTRADO"
   FALHA[ 68 ] = "LIMITE EXCEDIDO PARA O NOME DA REDE"
   FALHA[ 69 ] = "LIMITE DE SESSAO DA BIOS EXCEDIDO NA REDE"
   FALHA[ 70 ] = "PAUSA TEMPORARIA"
   FALHA[ 71 ] = "PEDIDO DE REDE NEGADO"
   FALHA[ 72 ] = "DISPOSITIVO DA IMPRESSORA OU DISCO PAUSADO."
   FALHA[ 73 ] = "RESERVADO PARA USO FUTURO 73"
   FALHA[ 74 ] = "RESERVADO PARA USO FUTURO 74"
   FALHA[ 75 ] = "RESERVADO PARA USO FUTURO 75"
   FALHA[ 76 ] = "RESERVADO PARA USO FUTURO 76"
   FALHA[ 77 ] = "MEMORIA INSUFICIENTE PARA OPERAR O EQUIPAMENTO. CHAME O TECNICO."
   FALHA[ 78 ] = "RESERVADO PARA USO FUTURO 78"
   FALHA[ 79 ] = "RESERVADO PARA USO FUTURO 79"
   FALHA[ 80 ] = "ARQUIVO JA EXISTENTE NO DISCO(HD)"
   FALHA[ 81 ] = "RESERVADO PARA USO FUTURO 81"
   FALHA[ 82 ] = "IMPOSSIVEL CRIAR DIRETORIO"
   FALHA[ 83 ] = "OCORREU FALHA EM INT 24H DO DOS"
   FALHA[ 84 ] = "EXCESSOS DE REDIRECIONAMENTOS"
   FALHA[ 85 ] = "REDIRECIONAMENTO DUPLICADO"
   FALHA[ 86 ] = "SENHA INVALIDA"
   FALHA[ 87 ] = "PARAMETRO INVALIDO OU INCORRETO."
   FALHA[ 88 ] = "ERRO AO ESCREVER PARA A REDE. DEFEITO TCNICO."
   FALHA[ 89 ] = "NENHUM ERRO OCORRIDO!"
   FALHA[ 90 ] = "erro de sistema."
   FALHA[ 91 ] = "Temporizador da tabela do serviço de transbordo."
   FALHA[ 92 ] = "Temporizador serviço tabela duplicar."
   FALHA[ 93 ] = "Nenhum item para trabalhar."
   FALHA[ 95 ] = "chamada de sistema interrompida."
   FALHA[ 99 ] = "Dispositivo em uso."
   FALHA[100]  = "usuário / sistema de limite de abertura do semáforo atingido."
   FALHA[101]  = "Exclusivo semáforo já possuía."
   FALHA[102]  = "DosCloseSem encontrada conjunto de semáforos."
   FALHA[103]  = "Há muitas solicitações de semáforos exclusivos."
   FALHA[104]  = "Operação inválida em tempo de interrupção."
   FALHA[105]  = "proprietário do semáforo anterior encerrado sem libertar semáforo."
   FALHA[106]  = "limite de Semaphore excedido."
   FALHA[107]  = "Insira o disco rígido B na unidade A."
   FALHA[108]  = "Unidade bloqueado por outro processo."
   FALHA[109]  = "Escreva no tubo com nenhum leitor."
   FALHA[110]  = "Open / Create falhou devido a ordem explícita falhar."
   FALHA[111]  = "Tampão passado para chamada de sistema muito pequeno para armazenar dados de retorno."
   FALHA[112]  = "Não há espaço suficiente no disco. Disco Cheio. Chame o Tecnico."
   FALHA[113]  = "Não é possível alocar uma outra estrutura de pesquisa e manusear."
   FALHA[114]  = "Alvo punho em DosDupHandle inválido."
   FALHA[115]  = "Usuário inválido endereço virtual."
   FALHA[116]  = "Erro na gravação de exibição ou o teclado ler."
   FALHA[117]  = "Categoria de DevIOCtl não definido."
   FALHA[118]  = "valor inválido passado para verificar bandeira."
   FALHA[119]  = "Nível quatro motorista não foi encontrado."
   FALHA[120]  = "Função inválida chamado."
   FALHA[999]  = "ERRO NAO CATALOGADO INFORME O NUMERO DO ERRO AO SUPORTE."

   /*
   Na maioria das vezes estes erros estão relacionados a uma falha de Hardware
   (parte fisica do computador)
   */

RETURN( "PROBLEMA: " + FALHA[ QUAL ] )

Rotina de erros - será exagero?

Enviado: 30 Jun 2016 14:02
por JoséQuintas
Eu tento avisar com algo mais, além de vir por email.

Código: Selecionar todos

   CASE "DOS ERROR 3" $ Upper( cTexto )
      cTxtError += "DOS Error 3" + hb_eol()
      cTxtError += "Esta mensagem ocorre quando o sistema faz referência a uma pasta que não existe, ou que não pode ser acessada" + hb_eol()
      cTxtError += "Verifique se a pasta realmente existe, e se o acesso não está bloqueado" + hb_eol()

Rotina de erros - será exagero?

Enviado: 30 Jun 2016 16:42
por Kapiaba
Além de vir por email, eu abro o editor do windows e mostro o ERROR.LOG

Quando o cliente liga, já tem a solução pronta...

Base aqui:

https://pctoledo.org/forum/viewto ... sta#p90368

abs

Rotina de erros - será exagero?

Enviado: 30 Jun 2016 17:54
por JoséQuintas
Exato.

Problemas eliminados:

- Usuário explicar o erro, tendo uma cópia ele nem precisa explicar
- Se já temos o erro, já corrigimos antes do usuário ligar
- Se o email não chega, pelo menos chama a atenção do usuário que está ocorrendo erro, e em certos casos já mostra como resolver

Nas primeiras vezes que usei isso, no Clipper, descobri o erro causado pelo Blinker 5.0 no Clipper em rede Windows 2000.
Que nem eu, nem os usuários sabíamos que acontecia.

Mas no Clipper o esquema era outro, parecido.
Era um programa separado que usava SAVE SCREEN pra capturar a tela final.

O que comentei agora, de problemas do servidor sumir, é perigoso.
Pode corromper tudo.
Só que não fica salvo. É bom pra cobrar solução.
Ainda não decidi se vou acrescentar esse último, pra poder registrar na pasta temp.