SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Exceções e Erros

     Maurício Linhares
Exceções e erros
}    Em Java, existe uma forma padronizada de um programa
      avisar que estão acontecendo erros, essa funcionalidade é
      representada através dos objetos “Exception” ou
      Exceções;

}    Em Java, objetos que herdam da classe Throwable
      podem ser lançados como erro;

}    As duas subclasses de Throwable disponíveis para
      utilização na linguagem são Error e Exception;
Por que ter objetos que representam
erros?
}    Para poder adicionar informação de diagnóstico do erro,
      como quais objetos estavam trabalhando quando ele
      aconteceu, a linha de código que ele aconteceu e até
      mesmo uma mensagem contendo informações sobre o
      problema;

}    Para documentar um problema que pode acontecer de
      forma padronizada, assim qualquer desenvolvedor vai
      saber quais os problemas que ele pode encontrar ao lidar
      com aquele código em específico;
Erros irrecuperáveis - Error
}    Objetos que descendem da classe Error representam
      problemas irrecuperáveis encontrados pela máquina
      virtual durante a sua execução;

}    Normalmente, quando um problema do tipo Error é
      encontrado, o melhor a se fazer é simplesmente
      “derrubar” a aplicaçao, é muito difícil se recuperar de um
      problema desses;

}    Uma aplicação normal não deve lançar erros, a não ser
      em casos muito específicos;
Alguns erros comuns da JVM
}    OutOfMemoryError
      }    Quando não há mais memória disponível
}    StackOverflowError
      }    Recursão infinita
}    NoClassDefFoundError
      }    Quando uma classe não está disponível para a aplicaçao
}    UnsatisfiedLinkError
      }    Quando uma biblioteca nativa não pode ser encontrada
Erros recuperáveis – Exceptions
}    São os erros recuperáveis do Java, representam
      problemas que podem acontecer durante a execução da
      aplicação, mas que ela pode prever e se preparar para
      solucionar o problema caso seja necessário;

}    Um código deve lançar uma exceção para sinalizar que
      algum problema aconteceu e que ele não pode continuar
      a ser executado normalmente;

}    As Exceptions existem em dois sabores, exceções
      “controladas” (checked) e exceções “livres” (unchecked);
Exceções controladas (checked
exceptions)
}    São os erros que o próprio compilador do Java obriga o
      código a tratar, o código não vai ser compilado até que o
      usuário declare o erro ou faça o tratamento dele;

}    Normalmente são erros comuns de se encontrar em uma
      aplicação e que realmente deveriam ser tratados de qualquer
      forma;

}    Todas as classes que herdam diretamente de Exception ou que
      não sejam subclasses de RuntimeException são exceções
      controladas;

}    Normalmente representam problemas externos a aplicação;
Exemplos de exceções controladas
}    FileNotFoundException
      }    Lançada quando o código tenta abrir um arquivo inexistente
}    SQLException
      }    Lançada quando ocorrem erros durante a comunicação com
            um banco de dados
}    SocketException
      }    Lançada quando ocorrem erros durante a comunicação entre
            máquinas em uma rede
Exceções livres - Unchecked exceptions
}    São as exceções que não precisam ser tratadas pelo
      código onde elas podem ser lançadas;

}    Elas normalmente representam problemas de
      programação (falhas do desenvolvedor) e o seu
      “lançamento” demonstra instabilidade em uma aplicação;

}    Todas as exceções que são sub-classes de
      RuntimeException são exceções livres;
Exemplos de exceções livres
}    NullPointerException
      }    Quando se tenta acessar uma propriedade ou invocar um
            método em uma referência para null;
}    ArrayIndexOutOfBoundsException
      }    Quando se tenta acessar um índice que não existe em um
            array
}    ClassCastException
      }    Quando é tentada uma operação de cast para tipos não
            compatíveis
}    ArithmeticException
      }    Quando alguma operação matemática incorreta é tentada,
            como dividir um inteiro por 0;
Declarando e lançando uma exceção


}    Uma exceção é uma classe comum, que herda de
      Exception ou de uma das suas subclasses;

}    Ela pode ter atributos e métodos como qualquer outra
      classe em Java
Exemplo de exceção
public class SaldoInsuficienteException extends Exception {

    private Conta conta;

    public SaldoInsuficienteException( Conta conta ) {
          super( "A conta do cliente " + conta.getCliente() + " não tem
    saldo o suficiente" );
          this.conta = conta;
    }

    public Conta getConta() {
          return conta;
    }

}
Lançando uma exceção – throw e
throws
}    Para lançar uma exceção, você deve criar um objeto do
      tipo dela e utilizar a palavra reservada “throw” seguida da
      referência para a exceção que foi criada;

}    Quando um “throw” é encontrado, a execução do
      programa retorna para o método que chamou o método
      atual, se houver um bloco de tratamento de erros, esse
      bloco é executado, se não houver um bloco de
      tratamento de erros,

Más contenido relacionado

La actualidad más candente

Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções javaAntonio Oliveira
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalhoHigor Klecyus
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesFAFICA
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensivaKayo Rayner
 
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Helder da Rocha
 
Excecoes
ExcecoesExcecoes
ExcecoesEMSNEWS
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddCarlos Santana
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaRegis Magalhães
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockitoRenan Uchôa
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em javaMarques Amaro
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 

La actualidad más candente (19)

Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
 
Semana dois
Semana doisSemana dois
Semana dois
 
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
 
Excecoes
ExcecoesExcecoes
Excecoes
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tdd
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Herança
HerançaHerança
Herança
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 

Similar a Curso java 07 - exceções

Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java IVerônica Veiga
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosArthur Emanuel
 
Tratamento de exceções com PHP
Tratamento de exceções com PHPTratamento de exceções com PHP
Tratamento de exceções com PHPLeonardo Soares
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 

Similar a Curso java 07 - exceções (17)

Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Tratamento de exceções com PHP
Tratamento de exceções com PHPTratamento de exceções com PHP
Tratamento de exceções com PHP
 
Exceptions
ExceptionsExceptions
Exceptions
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Java3
Java3Java3
Java3
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Java11
Java11Java11
Java11
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 

Más de Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Maurício Linhares
 

Más de Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010
 

Curso java 07 - exceções

  • 1. Exceções e Erros Maurício Linhares
  • 2. Exceções e erros }  Em Java, existe uma forma padronizada de um programa avisar que estão acontecendo erros, essa funcionalidade é representada através dos objetos “Exception” ou Exceções; }  Em Java, objetos que herdam da classe Throwable podem ser lançados como erro; }  As duas subclasses de Throwable disponíveis para utilização na linguagem são Error e Exception;
  • 3. Por que ter objetos que representam erros? }  Para poder adicionar informação de diagnóstico do erro, como quais objetos estavam trabalhando quando ele aconteceu, a linha de código que ele aconteceu e até mesmo uma mensagem contendo informações sobre o problema; }  Para documentar um problema que pode acontecer de forma padronizada, assim qualquer desenvolvedor vai saber quais os problemas que ele pode encontrar ao lidar com aquele código em específico;
  • 4. Erros irrecuperáveis - Error }  Objetos que descendem da classe Error representam problemas irrecuperáveis encontrados pela máquina virtual durante a sua execução; }  Normalmente, quando um problema do tipo Error é encontrado, o melhor a se fazer é simplesmente “derrubar” a aplicaçao, é muito difícil se recuperar de um problema desses; }  Uma aplicação normal não deve lançar erros, a não ser em casos muito específicos;
  • 5. Alguns erros comuns da JVM }  OutOfMemoryError }  Quando não há mais memória disponível }  StackOverflowError }  Recursão infinita }  NoClassDefFoundError }  Quando uma classe não está disponível para a aplicaçao }  UnsatisfiedLinkError }  Quando uma biblioteca nativa não pode ser encontrada
  • 6. Erros recuperáveis – Exceptions }  São os erros recuperáveis do Java, representam problemas que podem acontecer durante a execução da aplicação, mas que ela pode prever e se preparar para solucionar o problema caso seja necessário; }  Um código deve lançar uma exceção para sinalizar que algum problema aconteceu e que ele não pode continuar a ser executado normalmente; }  As Exceptions existem em dois sabores, exceções “controladas” (checked) e exceções “livres” (unchecked);
  • 7.
  • 8. Exceções controladas (checked exceptions) }  São os erros que o próprio compilador do Java obriga o código a tratar, o código não vai ser compilado até que o usuário declare o erro ou faça o tratamento dele; }  Normalmente são erros comuns de se encontrar em uma aplicação e que realmente deveriam ser tratados de qualquer forma; }  Todas as classes que herdam diretamente de Exception ou que não sejam subclasses de RuntimeException são exceções controladas; }  Normalmente representam problemas externos a aplicação;
  • 9. Exemplos de exceções controladas }  FileNotFoundException }  Lançada quando o código tenta abrir um arquivo inexistente }  SQLException }  Lançada quando ocorrem erros durante a comunicação com um banco de dados }  SocketException }  Lançada quando ocorrem erros durante a comunicação entre máquinas em uma rede
  • 10. Exceções livres - Unchecked exceptions }  São as exceções que não precisam ser tratadas pelo código onde elas podem ser lançadas; }  Elas normalmente representam problemas de programação (falhas do desenvolvedor) e o seu “lançamento” demonstra instabilidade em uma aplicação; }  Todas as exceções que são sub-classes de RuntimeException são exceções livres;
  • 11. Exemplos de exceções livres }  NullPointerException }  Quando se tenta acessar uma propriedade ou invocar um método em uma referência para null; }  ArrayIndexOutOfBoundsException }  Quando se tenta acessar um índice que não existe em um array }  ClassCastException }  Quando é tentada uma operação de cast para tipos não compatíveis }  ArithmeticException }  Quando alguma operação matemática incorreta é tentada, como dividir um inteiro por 0;
  • 12. Declarando e lançando uma exceção }  Uma exceção é uma classe comum, que herda de Exception ou de uma das suas subclasses; }  Ela pode ter atributos e métodos como qualquer outra classe em Java
  • 13. Exemplo de exceção public class SaldoInsuficienteException extends Exception { private Conta conta; public SaldoInsuficienteException( Conta conta ) { super( "A conta do cliente " + conta.getCliente() + " não tem saldo o suficiente" ); this.conta = conta; } public Conta getConta() { return conta; } }
  • 14. Lançando uma exceção – throw e throws }  Para lançar uma exceção, você deve criar um objeto do tipo dela e utilizar a palavra reservada “throw” seguida da referência para a exceção que foi criada; }  Quando um “throw” é encontrado, a execução do programa retorna para o método que chamou o método atual, se houver um bloco de tratamento de erros, esse bloco é executado, se não houver um bloco de tratamento de erros,