Baixe o app para aproveitar ainda mais
Prévia do material em texto
Desenvolvimento de software Fabiano Gonçalves dos Santos Aula 5 Tratamento de Exceções • As exceções são um dos meios de se emitir uma interrupção para o processador do computador • Existem duas origens principais de exceções : –Hardware –Software 2 T ip o s d e E x c e ç õ e s 3 Classe Descrição ArgumentException A exceção que é acionada quando um dos argumentos fornecidos para um método não é válido. ArgumentNullException A exceção que é lançada quando uma referência nula (Nothing no Visual Basic) é passada para um método que não aceita nulo como um argumento válido. ArgumentOutOfRangeException A exceção é lançada quando o valor de um argumento estiver fora do intervalo de valores permitido conforme definido pelo método chamado. IndexOutOfRangeException A exceção que é lançada quando é feita uma tentativa de acessar um elemento da matriz com um índice está fora dos limites da matriz. NotImplementedException A exceção que é jogada quando um método ou operação solicitada não é implementada. OutOfMemoryException A exceção que é lançada quando não há memória suficiente para continuar a execução de um programa. OverflowException A exceção é lançada quando uma operação aritmética, transmissão ou conversão em um contexto marcada resultados em um estouro. FileNotFoundException A exceção que é lançada quando uma tentativa de acessar um arquivo que não existe no disco falha. Faz parte do escopo System.IO. Estrutura de um Bloco de Tratamento de Exceções 4 Try 'tenta executar um ou mais comandos Catch variavel As Exception 'captura uma possível exceção originado da 'tentativa de execução do comando anterior Finally 'executa um ou mais comandos independente de 'uma exceção ocorrer ou não End Try Try... End Try 5 excecao1.vb 1 2 3 4 5 6 7 8 9 10 11 12 Module Module1 Sub Main() Dim i As Decimal = 10 Dim j As Decimal = 0 Dim Resultado As Decimal Resultado = i / j Console.ReadKey() End Sub End Module Exemplo 6 Catch 7 excecao2.vb 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Module Module1 Sub Main() Dim i As Decimal = 10 Dim j As Decimal = 0 Dim Resultado As Decimal Try Resultado = i / j Catch ex As Exception 'Captura uma exceção genérica, não específica Console.WriteLine("Houve um erro devido a uma divisão por zero!") End Try Console.ReadKey() End Sub End Module Erro da instrução Catch para capturar erro específico de divisão por zero 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Module Module1 Sub Main() Dim i As Decimal = 10 Dim j As Decimal = 0 Dim Resultado As Decimal Try Resultado = i / j Catch exDivideByZero As DivideByZeroException 'Captura uma exceção específica de divisão por zero Console.WriteLine("Houve um erro devido a uma divisão por zero!") Catch ex As Exception 'Captura genérica, não específica Console.WriteLine("Houve um erro qualquer!") End Try Console.ReadKey() End Sub End Module Uso de tratamento de exceção para capturar erro de abertura e leitura de arquivo 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Imports System.IO Module Module1 Sub Main() 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 Console.WriteLine("Erro na leitura do arquivo.") End Try Catch ex As Exception Console.WriteLine("Erro na abertura de arquivo.") End Try Console.ReadKey() End Sub End Module Finally 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Module Module1 Sub Main() Dim i As Decimal = 10 Dim j As Decimal = 0 Dim Resultado As Decimal Try Resultado = i / j Catch exDivideByZero As DivideByZeroException 'Captura uma exceção específica de divisão por zero Console.WriteLine("Houve um erro devido a uma divisão por zero!") Catch ex As Exception 'Captura genérica, não específica Console.WriteLine("Houve um erro qualquer!") Finally Beep() Console.WriteLine("O programa finalizou.") End Try Console.ReadKey() End Sub End Module Lançamento de Exceções (Throw) 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Module Module1 Sub Main() Dim i As Decimal = 10 Dim j As Decimal = 0 Dim Resultado As Decimal Try If (j = 0) Then Throw New System.Exception("Divisor j igual a zero.") End If Resultado = i / j Catch ex As Exception 'Captura genérica, não específica Console.WriteLine("Ocorreu uma exceção: {0}", ex.Message) Finally Beep() Console.WriteLine("O programa finalizou.") End Try Console.ReadKey() End Sub End Module Desenvolvimento de software Fabiano Gonçalves dos Santos Atividade 5 12 Vamos praticar 13 © A lp h a s p ir it | D re a m s ti m e .c o m
Compartilhar