Você está na página 1de 34

Visual Basic .

NET
Procedimentos, Escopo e Tratamento de Excees
Professor: Danilo Giacobo
Pgina pessoal: www.danilogiacobo.eti.br
E-mail: danilogiacobo@gmail.com

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Objetivos da aula

Como criar procedimentos?


Como criar funes?
Como comentar seus procedimentos?
Como passar um nmero de argumentos varivel para um procedimento?
Como especificar argumentos opcionais em um procedimento?
Como preservar o valor de varveis entre chamadas de procedimentos?
Como criar uma procedimento delegado?
Como criar propriedades?
Como entender o escopo de um programa?
Como usar o tratamento de excees no estruturada?
Como usar as declaraes Resume Next e Resume Line?
Como usar a declarao On Error GoTo 0?
Como recuperar o cdigo e a descrio de um erro?
Como usar o tratamento de excees estruturada?
Como usar os blocos Try, Catch e Finally?

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Introduo
Dividir o seu cdigo em procedimentos permite que voc quebre o cdigo em
unidades mais modulares. A linguagem VB .NET trabalha com dois tipos de
procedimentos:
- Sub procedures: no retornam valores quando terminam a execuo.
- Functions: retornam valores quando terminam de executar.
O Escopo de um cdigo importante a medida que o programa cresce e voc
precisa definir quais partes do cdigo sero acessveis por outras partes,
principalmente se tratando da Orientao a Objetos.
O tratamento de erros em Visual Basic .NET pode ser estruturado ou no
estruturado. A forma estruturada parecida com a de outras linguagens como
Java e usa os blocos Try, Catch e Finally. O tipo no estruturado tradicional do
prprio VB e usa as declaraes On Error GoTo.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Sub Procedures
Sub Procedures so criadas a partir de um conjunto de cdigos que executam
uma tarefa especfica mas que no retornam um valor ao final de sua
execuo.
Exemplo:

Dica: Opcionalmente voc pode usar a declarao Call para chamar uma sub
procedure. Por exemplo: Call MostrarMensagem(). Os () indicam os
argumentos que um procedimento recebe (se houver).

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Sub Procedures
Para especificar argumentos para um procedimento necessrio especificar o
tipo de dados e o nome dos mesmos.
Exemplo:

A palavra ByVal significa que o texto passado por valor, isto , uma cpia do
valor passada para o procedimento. Essa a opo padro. A outra
possibilidade passar o argumento por referncia (ByRef). Essa opo permite
que o procedimento altere o valor de uma varivel e quando este terminado
voc continua com o mesmo valor.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Sub Procedures
O exemplo abaixo mostra um procedimento usando um argumento passado por
referncia. Note que depois que eu altero o valor do parmetro dentro do
procedimento e este termina, eu perco o valor original.
Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Functions
Funes so criadas a partir de um conjunto de cdigos que executam uma
tarefa especfica e que retornam um valor ao final de sua execuo. Voc deve
informar o tipo de dados do retorno da funo. O valor a ser retornado pela
mesma definido pela palavra Return.
Exemplo:

Dica: Em vez da palavra Return voc pode usar o prprio nome da funo para retornar um
valor.
25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Escopo
Em VB .NET onde voc declara um elemento o que determina qual o seu
escopo. Ele pode ser:

Escopo de Bloco
Escopo de Procedimento
Escopo de Mdulo
Escopo de Namespace

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Escopo
Dentro de cada nvel de escopo voc ainda tem outras possibilidades:

Public
o
o
o

Protected
o
o

Elementos podem ser acessados de qualquer lugar dentro do mesmo projeto mas no fora dele.
Essa declarao s pode ser usada a nvel de Mdulo, Namespace ou Arquivo.

Protected Friend
o
o

Elementos podem ser acessados apenas dentro da mesma classe ou de uma classe derivada.
Essa declarao s pode ser usada em membros de uma classe.

Friend
o
o

Elementos podem ser acessados de qualquer lugar dentro do mesmo projeto.


Elementos podem ser acessados de outros projetos que referenciam ele.
Essa declarao s pode ser usada a nvel de Mdulo, Namespace ou Arquivo.

Elementos podem ser acessados de classes derivadas ou do mesmo projeto ou de ambos.


Essa declarao s pode ser usada em membros de uma classe.

Private
o
o

Elementos s podem ser acessados dentro do mesmo mdulo, classe ou estrutura.


Essa declarao s pode ser usada a nvel de Mdulo, Namespace ou Arquivo.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

Escopo - Exemplos

Tente trocar a palavra


Public por Private

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

10

Tratamento de Excees
H duas formas de tratamento de erros em tempo de execuo:

Estruturada
No Estruturada

O que uma exceo?


Excees so erros em tempo de execuo.
Voc PODE e DEVE capturar as excees que ocorrem em seu programa para
que elas (as excees) no levem seu programa a um fim inglrio.
H vrios tipos de excees que podem ser tratadas e a linguagem VB .NET
possui um vasto campo de possibilidades para cuidar das mesmas.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

11

Tratamento de Excees
A tabela abaixo apresenta o nome e a descrio de algumas das excees
mais utilizadas em VB .NET:
Nome

Descrio

ArgumentException

Lanada quando um argumento fornecido para o mtodo no vlido.

ArithmeticException

Classe base para excees que ocorrem durante operaes aritmticas.

ArrayTypeMismatchException

ArrayTypeMismatchException lanada quando um objeto


incompatvel est sendo armazenado em um array.

DivideByZeroException

Ocorre quando h uma tentativa de dividir um nmero por zero.

IndexOutOfRangeException

IndexOutOfRangeException lanada quando se tenta acessar um array


usando um ndice que menor que zero ou maior que o mximo
permitido.

InvalidCastException

Lanada quando um uma converso de tipo explcita de um tipo base


para um tipo derivado falha em tempo de execuo.

NullReferenceException

Lanada quando um objeto ao ser acessado possui uma referncia nula.

OutOfMemoryException

OutOfMemoryException lanada quando no h memria suficiente


para realizar a operao.

OverflowException

OverflowException lanada quando em uma operao aritmtica


ocorre overflow.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

12

Tratamento de Excees - No Estruturada

Velho mecanismo herdado da verso 6 do VB


Usa a declarao On Error GoTo
Transfere o controle do programa em caso de exceo
Envolve a criao de labels
Precisa da palavra Exit Sub

Viso Geral de Funcionamento:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

13

Tratamento de Excees - No Estruturada


O programa do exemplo abaixo causa uma exceo. Quando a exceo
ocorre o controle do programa passado para a linha 8. Ele trata o erro e
mostra uma mensagem; e usando as palavras Resume Next retorna o controle
para a linha 6.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

14

Tratamento de Excees - Estruturada

Mecanismo parecido com o de outras linguagens


Usa a sintaxe Try...Catch...Finally
Precisa da classe Exception
Para cada exceo necessrio um bloco Catch

Viso Geral de Funcionamento:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

15

Tratamento de Excees - Estruturada


O exemplo abaixo causa uma exceo. Quando a exceo ocorre o controle
do programa passado para a linha 8. Ele trata o erro e mostra uma mensagem.

Dica: Voc pode usar o campo ex.Message que contm a seguinte mensagem:
Arithmetic operation resulted in an overflow.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

16

Comentando seus procedimentos


De uma forma geral, voc deve adicionar um novo comentrio quando voc
declara uma nova e importante varivel. Uma boa prtica tambm aplicar
esse mtodo para procedimentos. A tabela abaixo mostra os possveis elementos
que um comentrio de procedimento deve ter.
Cabealho da seo

Descrio do comentrio

Propsito

O que o procedimento faz.

Suposies

Lista de cada varivel externa, controle ou arquivo aberto.

Efeitos

Lista de cada varivel externa, controle ou arquivo afetado pela funo.

Entradas

Cada argumento que pode no parecer bvio (um por linha).

Sadas

Explanao dos valores retornados pelas funes.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

17

Comentando seus procedimentos


Exemplo:

Dica: Clicando com o boto direito do mouse em cima de um procedimento e


selecionando a opo Insert Comment voc pode incluir os comentrios no
padro do Visual Studio que depois podem ser transformados em um tipo de
documentao do sistema.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

18

Passando um nmero varivel de argumentos


- Usualmente, voc no pode chamar um procedimento com mais argumentos
que a declarao da mesma permite.
- Quando voc quiser um nmero indefinido de argumentos voc pode declarar
um array de parmetros, que permite a um procedimento aceitar um array de
valores como um argumento.
- Na definio do procedimento voc no precisa especificar o nmero de
elementos do array de parmetros. O tamanho dele determinado quando o
procedimento chamado.
- Os argumentos deste tipo so sempre passados usando ByVal.
- Todos os argumentos do array devem ser do mesmo tipo de dados.
- Para este fim usado o elemento ParamArray.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

19

Passando um nmero varivel de argumentos


Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

20

Especificando Argumentos Opcionais


- Para tornar um argumento de um determinado procedimento opcional, voc
deve usar a palavra Optional (ela deve ser colocada antes do nome do
parmetro).
- Se voc definir um argumento como opcional, todos os parmetros seguintes
devem ser tambm opcionais e alm disso devem possuir um valor padro
(default). Voc define um valor padro usando o operador = mais o valor
padro do argumento.
- Voc pode usar a palavra Nothing como valor padro dos argumentos de um
procedimento e usando a funo IsNothing voc consegue verificar quais
parmetros opcionais tiveram seus valores informados.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

21

Especificando Argumentos Opcionais


Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

22

Preservando valores de variveis em procedimentos


Veja o seguinte cdigo:

Quando este programa executado qual o valor mostrado na tela? 1 ou 5?

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

23

Preservando valores de variveis em procedimentos


Veja agora o cdigo corrigido:

Dica: Voc poderia declarar a varivel intContarValor fora da funo Contar()


tornando-a com escopo modular. Essa mudana no recomendada porque
pode causar conflitos entre variveis de mesmo nome e escopo diferentes.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

24

Criando procedimentos delegados


Veja o seguinte cdigo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

25

Criando propriedades
Veja o seguinte cdigo:

Um objeto em VB .NET tem mtodos, campos e propriedades.


25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

26

Criando propriedades
Voc pode configurar propriedades de um objeto como um array.
Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

27

Usando o Tratamento de Exceo No Estruturada


- Sem o tratamento adequado dos erros que podem vir a acontecer no seu
cdigo, qualquer exceo que ocorra em seu programa fatal e o programa
ir parar.
- A declarao On Error GoTo permite o tratamento da exceo e especifica
onde ela ser tratada. A sua sintaxe a seguinte:
On Error { GoTo [ line | 0 | 1 ] | Resume Next }

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

28

Usando o Tratamento de Exceo No Estruturada


Voc pode tambm tratar excees especficas de formas diferentes
dependendo de qual ocorreu por meio da propriedade Number do objeto Err.
Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

29

Usando o Tratamento de Exceo No Estruturada


Outra maneira de verificar qual exceo foi capturada usar as palavras
TypeOf e Is em uma declarao If para testar a classe da exceo.
Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

30

Usando o Tratamento de Exceo No Estruturada


A grande estrela do tratamento de exceo no estruturada a declarao
Resume que permite que o programa termine a sua execuo mesmo que uma
exceo tenha ocorrido.
Exemplo (com Resume Next):

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

31

Usando o Tratamento de Exceo No Estruturada


A declarao Resume Line define uma linha do cdigo para onde o cdigo
continuar executando depois que uma exceo ocorrer.
Exemplo (com Resume Line):

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

32

Usando o Tratamento de Exceo No Estruturada


Para informaes detalhadas sobre excees, voc pode usar as propriedades
Number e Description do objeto Err.
Exemplo:

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

33

Referncias Bibliogrficas

HOLZNER, Steven. Visual basic.NET: black book. Arizona: Coriolis Group


Books, 2002. xxxviii, 1144 p ISBN 1-57610-835-X.

25/03/2014

Desenvolvimento de Aplicaes em Ambiente Visual

34

Você também pode gostar