Escolar Documentos
Profissional Documentos
Cultura Documentos
AULA 5
Profa: ADRIANA SICSÚ, DSc.
adriana.aparicio@globo.com
2
Exceção
3
Exceção
Exceção de Hardware
São causadas por erros do programa a nível de hardware.
Exemplo: Violação de acesso a endereços de memória.
Exceção de Software
são causadas por erros do programa a nível de software.
Exemplo: Atribuir um valor incompatível a uma variável
Divisão por zero
(MACKENZIE e SHARKEY, 2003).
4
Tratamento de Exceções
Estruturadas (SEH)
5
Tipos de Exceções
6
Bloco Try ... End Try
Sintaxe:
Try
... Cath:
Catch ex As Exception Marca a seção do bloco que captura e trata as
... exceções que podem eventualmente ocorrer.
End Try Em geral, usa-se uma seção Catch para capturar
cada tipo de exceção e uma seção Catch, chamada
genérica, no final para capturar todos os demais
tipos de exceções que não foram capturados pelas
seções Catch anteriores.
7
Bloco Try ... End Try
Sintaxe:
Try
...
Catch ex1 As Exception1
' Código para tratamento da Exception1
...
Catch exN As ExceptionN
' Código para tratamento da ExceptionN
...
' Captura Genérica
Catch ex As Exception
' Código para tratamento das demais exceções
...
End Try
8
Bloco Try ... End Try
9
Bloco Try ... End Try
Sub Main()
Permite realizar a captura e o tratamento da
Dim i As Decimal = 10
exceção genérica, ou seja, de qualquer tipo de
Dim j As Decimal = 0
exceção.
Dim Resultado As Decimal
Try
Resultado = i / j
Catch ex As Exception
' Captura Genérica
Console.WriteLine("Houve um erro de exceção de divisão por zero.")
End Try
Console.ReadKey()
End Sub
10
Bloco Try ... End Try
11
Bloco Try ... End Try - Aninhado
Imports System.IO
Module Module1 Define um bloco Try...End Try externo que
Sub Main() contém um outro bloco Try...End Try interno.
Dim FileName As String = "TestFile.data"
' Bloco externo
Try
Dim fs As New FileStream(FileName, FileMode.Open, FileAccess.Read)
' Bloco interno
Try
Dim reader As New BinaryReader(fs)
reader.ReadInt32()
Catch ex As Exception
Se ocorrer uma exceção na
Console.WriteLine("Exceção na leitura do arquivo.")
abertura do arquivo, o programa
End Try
exibe a mensagem "Exceção na
Catch ex As Exception
abertura do arquivo." e se após a
Console.WriteLine("Exceção na abertura do arquivo.")
abertura do arquivo sem exceção,
End Try
ocorrer uma exceção na leitura do
Console.ReadKey()
arquivo, o programa exibe a
End Sub
mensagem "Exceção na leitura do
End Module
arquivo.“
12
Seção Finally
13
Seção Finally
Sub Main()
Dim i As Decimal = 10 Sempre emite um sinal sonoro, Beep(), antes
Dim j As Decimal = 0 de terminar o bloco Try...End Try.
Dim Resultado As Decimal
Try
i = i + 10
Resultado = i / j
Catch exDivideByZero As DivideByZeroException
' Captura DivideByZeroException
Console.WriteLine("Houve um erro de exceção de divisão por zero.")
Catch ex As Exception
' Captura Genérica
Console.WriteLine("Houve um erro de exceção genérica.")
Finally
Beep()
End Try
Console.ReadKey()
End Sub
14
Lançamento de Exceções
Sintaxe:
Throw [ expressão ]
15
Lançamento de Exceção
16
Saiba Mais ....
– Tratamento de Exceções
• http://msdn.microsoft.com/pt-br/library/c68xfk56.aspx
– Manipulação Estruturada de Exceções
• http://msdn.microsoft.com/pt-br/library/8a9f2ew0.aspx
– Classe Exception
• http://msdn.microsoft.com/pt-br/library/system.exception.aspx
– Como Capturar uma exceção
• http://msdn.microsoft.com/pt-br/library/ys1b32h3.aspx
– Declaração Try... Catch... Finally... End Try
• http://msdn.microsoft.com/pt-br/library/fk6t46tz.aspx
– Tratamento de Exceção Não Estruturado
• http://msdn.microsoft.com/pt-br/library/sf1hwa21.aspx
– Declaração On Error
• http://msdn.microsoft.com/pt-br/library/5hsw66as.aspx
– Quando Usar Manipulação de Exceção Estruturada ou Não Estruturada
• http://msdn.microsoft.com/pt-br/library/s74yzzb5.aspx
– Como Lançar um exceção
• http://msdn.microsoft.com/pt-br/library/z7w9ff54.aspx
– Declaração Throw em linguagem
• http://msdn.microsoft.com/pt-br/library/ty79csek.aspx
17
Próxima Aula
18