Tratamento de erros I Ideia básica

Documentos relacionados
Collections. Objecto Collection. Propriedades e métodos

Instalar DSNs. <Control Panel> seguido de <Administrative Tools> e <Data Sources (ODBC)> Data Source Names I

Objectivos. Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)

VBA e Access. Opções do Access

Tutorial de Extensibilidade

Módulo 1a: Introdução ao Visual Basic for Applications (VBA)

5. NOÇÕES DE PROGRAMAÇÃO

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Variáveis Tipos de Dados. APROG (Civil) Aula 2

Variáveis Tipos de Dados

Fundamentos Programação

Visual Basic for Applications

Visual Basic. VII Ficheiros Sequenciais. CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares

CFAC: Visual Basic: VII - Ficheiros Sequenciais. VII Ficheiros Sequenciais

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

PRIMAVERA v7.50. Manual de Integração. Manual de Integração de Aplicações Externas no Administrador PRIMAVERA. Versão 2.2

Integração por Web Services

Informática II Ficha 4_resolução

Para instalar o Visual Basic 2010 Express.

Trabalho final Formulário com VBA

Macros e Programação VBA

Possível resolução (Arquitectura VBA Exercícios por resolver)

Manual de Integração ERP PRIMAVERA V9.00

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Informática II Cap. 4-4

Instituto Superior de Engenharia do Porto Programação (SEE)

Laboratório de Programação I

Introdução à Computação

Introdução à Computação

Estruturas de Decisão. APROG (Civil) Aula 6

1) Mostrando uma mensagem. 10 exemplos de macros essenciais no Excel. Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11ºANO

Código do formulário frmcalculardesvalorização

Excel 2016 com VBA. Aula 5. Prof. Guilherme Nonino Rosa

Material de Apoio. Access - Módulo II (Novo) 1632_MA01 Novembro/2013

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

CÓDIGO FONTE CALCULADOR DE 04 OPERAÇÕES

Manual de Integração ERP PRIMAVERA V8.10

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

Manipulando Strings no VBA (Replace, Mid e InStr)

Informática II Cap. 4-2

Exercícios Data Modeling

EISnt Centro de Formação em Tecnologia

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Algoritmia e Programação

Código do formulário frmfacturascliente

Variáveis indexadas Vectores e Matrizes. APROG (Civil) Aula 12

Este Exame é individual, sem consulta e com a duração de 90 minutos. Responda às questões no próprio teste, no espaço próprio.

Manipulando Strings no VBA (Replace, Mid e InStr)

APROG Civil. Estruturas de Decisão. Angelo Martins Dep. Eng. Informática - ISEP. Aula 2. ISEP DEI, Angelo Martins 2006 ISEP-DEI, António Silva, 2007

Informática II Ficha 5_resolução

Teste Avaliação Global (TAG) Resolução

Estruturas de Decisão Embutidas. APROG (Civil) Aula 7

Estruturas de Repetição Embutidas. APROG (Civil) Aula 11

4 Conceito de Herança

Tutoriais de Extensibilidade

Linguagens de Programação

Programar. Visual Basic 1/61

INFORMÁTICA DE GESTÃO

VBA e Access. Modo de interacção

Linguagem de Programação II. Introdução à programação em VB Professor: Armando Hage

Programação Estruturada e Orientada a Objetos

Manual de Integração. Interface Gestão Documental Plataforma PRIMAVERA

Programação de Computadores usando VBA

Código do formulário frmprincipal

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Resolução de exercícios da ficha de trabalho nº. 8 de VBA

Instituto Superior de Línguas e Administração GAIA Concurso: Oscares da Academia

Laboratório de Linguagens de Programação Prof. Andrei Rimsa Álvares. Trabalho Prático I

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Exercícios de VBA. Paulo Melo Joana Dias Óscar Lourenço 17 de Maio de 2006

FastCube 2.0 Programmer Manual

Código do formulário frmcalcularinvestimento. Nesta tarefa iremos analisar o código desenvolvido para o formulário frmcalcularinvestimento.

Grupo 3: 8,3 - Parte Léxica (2,0): 1,9 - Na parte I especificou tamanho de identificador com 512 caracteres, mas não tratou (-0,1) -Parte Sintática

Linguagem de programação: Pascal

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução ao Fortran 90. Aula 3

Análise Semântica e Tratamento de Erros Dependentes de Contexto

QBalança Biblioteca de comunicação com balanças

Algoritmos II prof. Daniel Oliveira

DESENVOLVIMENTO DE SOFTWARE

Algoritmia e Programação

Principais Funções do VBscript

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Índice. Bloco Visual Basic v 0.3 A. Martins Página 1/18

Código do formulário frmadicionarfactura

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Introdução ao Fortran 90-3

VB.NET - Orientação a objetos : conceitos básicos em 10

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Capítulo 8. Estruturas de Controle no Nível de Sentença

Excel 2016 com VBA. Aula 4. Prof. Guilherme Nonino Rosa

Tutoriais de Extensibilidade

10. Acessando o Banco de Dados através do Visual Basic

EMGI Programação. Ficha 9 Resolução

Orientação a Objetos AULA 09

Transcrição:

Tratamento de erros I Ideia básica Sempre que ocorre um erro, o seu tratamento fica a cargo da última declaração On Error invocada no procedimento corrente Caso não haja qualquer declaração desse tipo, o erro é tratado no primeiro procedimento pai que possui tratamento de erros. Se nenhum dos procedimentos envolvidos possuir tratamento de erros, o sistema aborta a execução e apresenta uma mensagem indicando o erro ocorrido Formas de tratar erros On Error GoTo line: activa a rotina de tratamento de erros que se encontra a partir da indicação line. A posterior ocorrência de qualquer erro transfere imediatamente a execução para a rotina especificada [Sub Function] procedimento( ) On Error GoTo Rotina_Tratamento_Erros [...] Exit [Sub Function] Rotina_Tratamento_Erros: [...] End [Sub Function] Visual Basic for Applications: # 79

Tratamento de erros II Formas de tratar erros On Error Resume Next: ignora a posterior ocorrência de qualquer erro e prossegue a execução na instrução seguinte à que provocar o erro On Error GoTo 0: desactiva o tratamento de erros no procedimento corrente Retomar a execução Resume: retoma a execução na instrução que provocou o erro Resume Next: retoma a execução na instrução seguinte à que provocou o erro Resume line: retoma a execução na instrução indicada por line Objecto Err Err.Number: número que identifica o último erro ocorrido Err.Description: descrição sumária do último erro ocorrido Err.Clear: limpa as propriedades Err.Number (0) e Err.Description ( ). É igualmente invocado sempre que uma das seguintes instruções é executada: Instruções do tipo Resume Instruções do tipo On Error Instruções Exit Sub, Exit Function, Exit Property Err.Raise Number: provoca a ocorrência do erro identificado por Number Visual Basic for Applications: # 80

Tratamento de erros III Sub teste_erros() On Error GoTo trat_erros: Dim erro As Integer : erro = 5 : MsgBox Início teste_erros gera_erro (erro) MsgBox Fim teste_erros : Exit Sub trat_erros: MsgBox Erro n. & Err.Number Select Case Err.Number Case 5 To 6 erro = erro + 1 : Resume Case Else Resume Next End Select End Sub Sub gera_erro(erro As Integer) MsgBox Início gera_erro Err.Raise erro MsgBox Fim gera_erro End Sub Sequência de mensagens Início teste_erros Início gera_erro Erro n. 5 Início gera_erro Erro n. 6 Início gera_erro Erro n. 7 Fim teste_erros Visual Basic for Applications: # 81

Collections Objecto Collection Conjunto ordenado de objectos não necessariamente do mesmo tipo Declarar um novo objecto: Dim col As New Collection Propriedades e métodos collection.count: número total de objectos na collection (só de leitura) collection.add Item, Key, Before, After: adiciona um novo objecto Item: objecto a adicionar Key: nome pelo qual o objecto será conhecido na collection Before/After: objecto antes/depois do qual o novo objecto deve ser adicionado collection(index): objecto de ordem Index (o primeiro tem ordem 1) collection(key): objecto cujo nome é Key collection.remove Index: remove o objecto de ordem Index collection.remove Key: remove o objecto cujo nome é Key Visual Basic for Applications: # 82

Módulos de classe I para trabalhar com facturas posso declarar um conjunto de variáveis que represente os dados que pretendo manipular Dim ID As Long : Dim datafactura As Date Dim datavencimento As Date : Dim datapagamento As Date Dim quantia As Currency : Dim ematraso As boolean para trabalhar com diferentes facturas em simultâneo posso criar um novo tipo de dados que represente a factura Type Factura Dim ID As Long :... : Dim ematraso As boolean End Type Dim factura01 As Factura : Dim factura02 As Factura como a manipulação de facturas envolve quase sempre as mesmas operações, posso criar um módulo de classe que especifique um novo objecto do tipo factura com propriedades e métodos que manipulem as facturas de igual modo Dim factura01 As New CFactura : Dim factura02 As New CFactura Visual Basic for Applications: # 83

Módulos de classe II Variáveis de classe (data members) Private m_datamember As Type Propriedades de classe (Property Get / Property Let) Public Property Get PropertyName([args]) As PropertyDataType [... : PropertyName = expr] [Exit Property] [... : PropertyName = expr] Public Property Let PropertyName([args,] NewVal As PropertyDataType) [... : m_datamember = expr] [Exit Property] [... : m_datamember = expr] Visual Basic for Applications: # 84

Módulos de classe III data members do módulo de classe CFactura Private m_id As Long :... : Private m_ematraso As boolean factura01.id Public Property Get ID() As Long ID = m_id factura01.ematraso Public Property Get EmAtraso() As Boolean EmAtraso = m_ematraso factura01.quantia = newquantia Public Property Let Quantia(newQuantia As Currency) If newquantia < 0 Then newquantia = 0 MsgBox Quantia inválida! Será usado zero. End If m_quantia = newquantia Visual Basic for Applications: # 85

Módulos de classe IV 'factura01.datafactura = newdata Public Property Let DataFactura(newData As Date) If newdata > Date Then newdata = Date MsgBox Data inválida! Será usada a data de hoje. End If m_datafactura = newdata m_datavencimento = m_datafactura + 30 'factura01.datapagamento = newdata Public Property Let DataPagamento(newData As Date) m_datapagamento = newdata m_ematraso = False Visual Basic for Applications: # 86

Módulos de classe V Propriedades de classe (Property Set) Public Property Set PropertyName([args,] NewObj As PropertyDataType) [... : Set m_datamember = expr] [Exit Property] [... : Set m_datamember = expr] Métodos de classe Public [Sub Function] MethodName([args]) [As MethodDataType] [...] End [Sub Function] Public Sub Update() factura01.update If m_datapagamento = 0 And m_datavencimento < Date Then m_ematraso = True End If End Sub Visual Basic for Applications: # 87

Módulos de classe VI Eventos de classe Private Sub Class_Initialize( ): ocorre quando um objecto da classe é instanciado pela primeira vez Private Sub Class_Terminate( ): ocorre quando todos os objectos da classe são removidos Private Sub Class_Initialize() Randomize m_id = Int(Rnd * 999999) m_datafactura = Date m_datavencimento = m_datafactura + 30 m_ematraso = True End Sub Private Sub Class_Terminate()... End Sub Visual Basic for Applications: # 88

Módulos de classe VII Classes de collections Private m_datamember As New Collection para manipular múltiplas facturas pode ser útil criar um novo módulo de classe que especifique um objecto facturas Dim facts As New CFacturas data member do módulo de classe CFacturas Private m_facturas As New Collection facts.add quantia Public Function Add(quantia As Currency) As CFactura Dim new_fact As New CFactura With new_fact.quantia = quantia Property Let de CFactura m_facturas.add Item:=new_fact, Key:=CStr(.ID) End With Set Add = new_fact End Function Visual Basic for Applications: # 89

Módulos de classe VIII facts.remove index Public Sub Remove(index As Variant) index é do tipo Variant m_facturas.remove index porque pode ser um End Sub número ou uma string facts.count Public Function Count() As Long Count = m_facturas.count End Function facts.item index Public Function Item(index As Variant) As CFactura Set Item = m_facturas(index) End Function exemplo de utilização Dim facts As New CFacturas facts.add 1000 facts.add 2000 MsgBox facts.count apresenta 2 facts.remove 1 MsgBox facts.item(1).quantia apresenta 2000 Visual Basic for Applications: # 90

Módulos de classe IX Propriedades de classe como objectos Muitas das propriedades de um objecto são por si só também objectos. Como é então possível definir uma propriedade como objecto? suponhamos que queremos criar um módulo de classe CCliente que especifique um novo objecto cliente Private m_nome As String Private m_facturas As CFacturas cliente01.nome Public Property Get Nome() As String Nome = m_nome cliente01.facturas Public Property Get Facturas() As CFacturas Set Facturas = m_facturas Visual Basic for Applications: # 91

Módulos de classe X cliente01.nome = newnome Public Property Let Nome(newNome As String) m_nome = newnome Set cliente01.facturas = newfacturas Public Property Set Facturas(newFacturas As CFacturas) Set m_facturas = newfacturas exemplo de utilização Dim cliente01 As New CCliente With cliente01.nome = António Set.Facturas = New CFacturas a declaração New cria uma With.Facturas nova instância do objecto.add 1000.Add 2000 End With End With MsgBox cliente01.facturas.item(1).quantia apresenta 1000 Visual Basic for Applications: # 92