SOBRE O AUTOR

NAVEGAÇÃO

FINANÇAS

SETOR ELÉTRICO

INFORMÁTICA

MISCELÂNEA

Clique aqui para ver meus bookmarks
 
INFORMÁTICA
Visual Basic
Introdução
Iniciando
Controles
Menus
Arquivos
Programação
Gráficos
Erros
Bancos de Dados
Dicas & Truques
Funções, Comandos
Eventos do VB
Downloads
InfoLinks
Delphi
 
SOBRE O AUTOR
Curriculum Vitae
Estante de Livros
Publicações
Painel ICQ
 
NAVEGAÇÃO
Página Inicial
Mapa do Site
Novidades
Busca no Site
Comentários
Livro de Visitas
 
FINANÇAS
As 500 mais - BR
Análise de Projetos
Contabilidade
Cotações Brasil
Cotações EUA
Estratégia
Gráficos Online
Glossário Financeiro
StockLinks
 
SETOR ELÉTRICO
EletroLinks
Papers
Privatização
 
MISCELÂNEA
Cinema
Curitiba
Humor
Links Amigos
Star Trek
 

Enviar e-mail Alvaro


WallStreet Dividend Award




©1998/1999
Alvaro A. de Almeida

 


  CAPÍTULO 7
TRATAMENTO DE ERROS


Capítulo 6 - Parte C 1 2 3 4 5 6 7 8 9 10 11 12 Capítulo 8

Se fôssemos capazes de desenvolver programas perfeitos, e se os usuários fossem perfeitos, e se o Usinas fosse perfeito, então não precisaríamos nos preocupar com tratamento de erros. Infelizmente, no Usinas em que vivemos arquivos desaparecem misteriosamente, disquetes não estão posicionados quando necessário e os usuários fazem o possível para descobrir novas formas de "travar" o seu programa. Sem rotinas de tratamento de erros, qualquer erro deste tipo seria fatal, isto é, acarretaria na interrupção do programa.
 

Existem basicamente três tipos de erros que podem ocorrer em um programa:
 

  • Erros de sintaxe: Estes erros ocorrem durante a escrita e depuração de programas e geralmente não afetam o usuário final. Entretanto, se você não estiver compilando em código nativo, pode ser que alguns erros de sintaxe só aparecam durante a execução. Isto ocorre porque na "compilação" em pseudo-código o VB não monta realmente o programa, pois trata-se de uma execução interpretada.
  • Erros de execução: Este tipo de erros ocorrem em programas perfeitos do ponto de vista sintático, mas falhos do ponto de vista de tratamento de erros. Erros de execução ocorrem quando dispositivos não podem ser acessados, etc.
  • Erros de lógica: Estes são os piores. Embora a sintaxe possa estar perfeita, se a lógica do programa não estiver bem planejada é possível que o computador entre por um longo caminho sem volta, como é o caso dos famosos "loops infinitos".

 

ERROS ACUSÁVEIS
 

Erros acusáveis são aqueles detectados pelo VB em tempo de compilação ou execução. Os mais comuns são mostrados na tabela 19 abaixo.

  Tabela 19 - Erros acusáveis mais comuns

 

Código Descrição Descrição em português
3 Return without GoSub Return sem GoSub
5 Invalid procedure call Chamada inválida de procedimento
6 Overflow Sobrecarga
7 Out of memory Falta de memória
9 Subscript out of range Subescrito fora do intervalo
10 This array is fixed or temporarily locked Este array é fixo ou temporariamente travado
11 Division by zero Divisão por zero
13 Type mismatch Tipo incorreto
14 Out of string space Falta de espaço no string
16 Expression Too Complex Expressão muito complexa
17 Can't perform requested operation Impossível realizar a operação requisitada
18 User interrupt occurred Interrupção do usuário
20 Resume without error Continuar sem erro
28 Out of Stack Space Sem espaço na pilha
35 Sub, Function, or Property not defined Sub, Função ou propriedade não definida
47 Too many DLL application clients Demasiados aplicativos DLL clientes
48 Error in loading DLL Erro no carregamento de DLL
49 Bad DLL calling convention Má convenção de chamada de DLL
51 Internal error Erro interno
52 Bad file name or number Número ou nome de arquivo incorreto
53 File not found Arquivo não encontrado
54 Bad file mode Modo de arquivo incorreto
55 File already open Arquivo jã aberto
57 Device I/O error Erro de dispositivo de entrada/saída
58 File already exists Arquivo já existe
59 Bad record length Tamanho de registro incorreto
61 Disk full Disco cheio
62 Input past end of file Entrada depois do fim do arquivo
63 Bad record number Número de registro incorreto
67 Too many files Arquivos em damasia
68 Device unavailable Dispositivo inacessível
70 Permission denied Permissão nagada
71 Disk not ready Disco não pronto
74 Can't rename with different drive Impossível renomear com drive diferente
75 Path/File access error Erro de acesso a caminho ou arquivo
76 Path not found Caminho não encontrado
91 Object variable or With block variable not set Variável objeto ou bloco With não definida
92 For loop not initialized Laço For não inicializado
93 Invalid pattern string Padrão de string inválido
94 Invalid use of Null Uso inválido de Null
444 Method not applicable in this context Métod não aplicável neste contexto
452 Invalid ordinal Ordinal inválido
453 Specified DLL function not found Função DLL especificada não encontrada
457 Duplicate Key Chave duplicada
460 Invalid Clipboard format Formato do Clipboard inválido
461 Specified format doesn't match format of data Formato especificado não casa com formato do dado
480 Can't create AutoRedraw image Impossível criar imagem AutoRedraw
481 Invalid picture Figura inválida
482 Printer error Erro de impressão
483 Printer driver does not support specified property Driver de impressão não suporta a proprieadade especificada
484 Problem getting printer information from the system. Make sure the printer is set up correctly Problemas em conseguir informação da impressora do sistema. Certifique-se de que a impressora está configurada corretamente.
485 Invalid picture type Tipo de figura inválida
520 Can't empty Clipboard Impossível esvaziar o Clipboard
521 Can't open Clipboard Impossível abrir o Clipboard

 
 

A INSTRUÇÃO "On Error"
 

Qualquer gerenciador de erros começa com esta instrução, que admite as seguintes formas de sintaxe:

  On Error GoTo linha: a execução do código é desviada para o rótulo descrito pelo parâmetro linha. Rótulos são identificadores não executáveis e são inseridos digitando-se dois pontos no final do nome. Por exemplo: Rótulo:.Quando se usa esta instrução, o rótulo identifica o início de uma rotina de tratamento de erros.
 

  • On Error Resume Next: a execução é desviada para a instrução imediatamente subsequente àquela que gerou o erro.
  •  On Error GoTo 0: desabilita qualquer gerenciador de erros ativo na procedure atual.

Uma rotina de tratamento de erros não é uma rotina do tipo Sub ou Function, mas sim um bloc de código identificado por um rótulo.
 
 

O OBJETO "Err"

 
Este objeto contém informações sobre erros em tempo de execução. A propriedade padrão é Number, que é um valor correspondente a um número válido de erro. Quando um erro ocorre, a seguinte sintaxe pode ser usada para acessar o número do erro: Err.Number.

 

A FUNÇAO "Error"
 

Esta função retorna uma mensagem de erro que corresponde a um número de erro especificado.  

Sintaxe: Error[(Número_Do_Erro)}

 
Se o parâmetro Número_Do_Erro for omitido, a função retornará o número do erro mais recente. Se Número_Do_Erro for inválido, um erro ocorrerá. As mensagens retornadas por esta função são expressas em inglês, naturalmente. Para obter as mensagens em português você deve implementar um gerenciador que capture o número do erro e exiba a mensagem traduzida.

 

O MÉTODO "Raise"

 
Este método do objeto Err simula um erro em tempo de execução e é ótimo para se verificar o funcionamento de rotinas de tratamento de erros.
 

Sintaxe: Err.Raise Número_Do_Erro

 

A instrução Error (Visual Basic 3.0) ainda é aplicável, mas apenas por compatibilidade. Para escrever programas que possam ser compilados por futuras versões do VB é preferível usar sempre os métodos e propriedades do objeto Err.

 

Exemplo:

 
Este exemplo primeiro usa a instrução On Error GoTo para especificar a localização de uma rotina de tratamento de erros dentro de uma procedure. No exemplo, uma tentativa é feita de se deletar um arquivo aberto, gerenado-se o erro número 55. O controle é então enviado para o comando que causou o erro e o comando On Error GoTo 0 desliga o tratamento de erros.
 

Sub OnErrorStatementDemo()
    On Error GoTo ErrorHandler ' Habilita o trataemento de erros.
    Open "TESTFILE" For Output As #1 ' Abre um arquivo para saída
    Kill "TESTFILE" ' Tenta deletar o arquivo
    On Error Goto 0 ' Desabilita o tratamento de erros.
    On Error Resume Next
    ObjectRef = GetObject("MyWord.Basic") ' Tenta inicializar um objeto inexistente.
    If Err.Number = 440 Or Err.Number = 432 Then
        Msg = "Houve um erro tentando abrir o objeto !"
        MsgBox Msg, , "Teste de erros"
        Err.Clear ' Apaga os campos do objeto Err.
    End If
    Exit Sub ' Abandona o procedimento para evitar a rotina de erros.
ErrorHandler: ' Rotina de tratamento de erros.
    Select Case Err.Number ' Obtém o número do erro.
        Case 55 ' Arquivo já aberto.
            Close #1 ' Fecha o arquivo.
        Case Else
            ' Insira outras situações aqui...
    End Select
Resume ' Continua a execução na mesma linha que causou o erro.
End Sub  


Copyright © 1998/1999 - Desenvolvido por Alvaro Augusto de Almeida (isso significa que você pode manter cópias para uso particular, mas não para divulgação). Dúvidas e sugestões serão bem vindas.   

     
Vai para a página inicial

Acessos desde 30.01.99: 

Enviar e-mail para Alvaro