Exceções Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI – Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem de Programação III – 5º Período Objetivos • Nesta aula iremos apresentar como detectar e tratar erros que podem ocorrer durante a execução de uma aplicação. Ou seja, iremos abordar o tratamento de exceções do C#. Ao final desta aula, o aluno poderá implementar pequenas aplicações que envolvem os conceitos abordados. Boa aula a todos. Linguagem de Programação III – 5º Período Plano de Aula • Exceções – – – – O que é? Sintaxe Finally Exceções do Usuário Linguagem de Programação III – 5º Período 3 Exceções O que é? • Exceção é um erro que ocorre durante a execução de uma aplicação. Por exemplo, uma aplicação pode tentar abrir um arquivo que não existe, o que configura uma exceção; • No C#, todas as exceções são representadas por classes. E todas elas devem herdar da classe Exception, encontrada no namespace System; • Classes derivadas de Exception: • SystemException: suporta exceções geradas pelo CLR; • ApplicationException: suporta exceções geradas pelas aplicações. O programador pode criar suas próprias classes de exceção herdando desta classe; Linguagem de Programação III – 5º Período 4 Exceções Exceções • O tratamento de exceção é controlado por quatro palavras-chave: try, catch, throw e finally; • Os comandos que podem gerar uma exceção devem estar em um bloco try. E quando uma exceção ocorre em um bloco try, diz-se que ela foi disparada; • Esta exceção é capturada por um bloco catch, entendido como um manipulador de exceções; • Um programador pode disparar um exceção “manualmente” usando a palavra-chave throw. Linguagem de Programação III – 5º Período 5 Exceções Exceções - Sintaxe try { //código que pode gerar exceção } catch (tipo-exceção1 [objeto-exceção]) { //tratamento de tipo-exceção1 } • • • • Não há try sem catch e vice-versa O tipo-exceção é o tipo de exceção disparada. Quando uma exceção é disparada, ela é capturada pelo bloco catch correspondente, associado a um bloco try; O tipo da exceção determinará qual bloco catch será executado, ignorando os demais blocos catch se existirem; Quando uma exceção é capturada, objeto-exceção recebe o valor da exceção. O objeto-exceção não é obrigatório; Se nenhuma exceção for disparada, o bloco try terminará normalmente, o bloco catch correspondente será ignorado e a execução do programa continuará após o último bloco catch. Linguagem de Programação III – 5º Período 6 Exceções Bloco try Blocos catch Linguagem de Programação III – 5º Período 7 Exceções Exceções - finally • Bloco de código executado independente do disparo de uma exceção e também do tipo de exceção disparada; • Há situações em que é preciso executar um código após o término de um bloco try/catch; • Por exemplo, um método pode abrir um arquivo e, pelo fato de ocorrer uma exceção, este arquivo poderá ficar aberto. Então, este arquivo poderá ser fechado em um bloco finally. • Um bloco finally vem após a sequencia try/catch. Linguagem de Programação III – 5º Período 8 Exceções Exceções - Exceções do Usuário • O mecanismo de exceção do C# permite que ao programador criar suas próprias exceções; • Para isto, basta definir uma classe de exceção derivada da classe ApplicationException; • Pela relação de herança, todos os métodos e propriedades de Exception ficam disponíveis à classe de exceção do usuário; • As propriedades públicas da classe Exception: • • • • Message: contém a descrição da exceção; Source: define ou retorna o nome da aplicação ou do objeto que causou a exceção; StackTrace: contém uma string com as chamadas aos métodos, na pilha, que levaram à exceção; TargetSite: indica o método que disparou a exceção; Linguagem de Programação III – 5º Período 9 Dúvidas Página do Professor Mauro: http://www.dai.ifma.edu.br/~mlcsilva Linguagem de Programação III – 5º Período Próxima Aula • Coleções. Linguagem de Programação III – 5º Período