Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia
Introdução
• Em sistemas de verdade, é muito comum que
quem saiba tratar o erro é aquele que chamou
o método e não a própria classe.
• Portanto, nada mais natural do que a classe
sinalizar que um erro ocorreu.
Exceção
• Uma exceção representa uma situação que
normalmente não ocorre e representa algo de
estranho ou inesperado no sistema.
• O sistema de exceções do Java funciona da
seguinte maneira:
– quando uma exceção é lançada (throw), a JVM entra
em estado de alerta e vai ver se o método atual toma
alguma precaução ao tentar executar esse trecho de
código.
Exceções
• Um código que vai tentar (try) executar o
bloco perigoso de código e ele
será pego (caught).
• Cada exceção no Java tem um tipo e pode ter
atributos e métodos.
Exceções
• Tratando-as no código:
try {
//Código a ser ‘testado’
}
catch (Exception e)
{
//Código que irá tratar a exceção
//capturada
}
Exceções mais comuns
• Divisão por zero
• Correção
Exceções mais comuns
• Acessar posição inválida de array
• Correção
Exceções mais comuns
• Referência para null tentando ser acessada
• Correção
Tipos de Exceções
• Checked Exceptions
– obriga a quem chama o método ou construtor a
tratar essa exceção
– o compilador checará se ela está sendo
devidamente tratada
• Unchecked Exceptions
• o compilador não checará e não obrigará a exceção a ser
tratada
• Código pode ser compilado e executado
• Abrir um arquivo sem tratar a Checked Exception
• Resulta em erro
• Código não é compilado
Checked Exceptions
Checked Exceptions
• Solução 1
– tratar com o try e catch
Checked Exceptions
• Solução 2
– delegar o erro para quem chamou o nosso
método, isto é, passar para a frente.
– Avisa da possibilidade daquele método lançar
exceção, obrigando o outro método que vá utilizar
deste de se preocupar com essa exceção em
questão.
Checked Exceptions
• Não há uma regra para decidir em que momento
do seu programa você vai tratar determinada
exceção.
• Isso vai depender de em que ponto você tem
condições de tomar uma decisão em relação
àquele erro.
• Enquanto não for o momento, você
provavelmente vai preferir delegar a
responsabilidade para o método que te invocou.
Tratando mais de um erro
• Com try/catch
• Com throws
Lançando Exceções
• A palavra chave throw lança uma Exception.
Criar a Própria Exceção
• É bem comum criar uma própria classe de exceção
para controlar melhor o uso de suas exceções.
• Obrigar quem chamar o método a usar try/catch ou
throws
throw throws Try/catch
Exceção
Própria
Finally...
• Os blocos try e catch podem conter uma terceira
cláusula chamada finally que indica o que deve
ser feito após o término do bloco try ou de
um catch qualquer.
– algo que é imprescindível de ser executado, caso o
que você queria fazer tenha dado certo, ou não
– O caso mais comum é o de liberar um recurso no
finally, como um arquivo ou conexão com banco de
dados, para que possamos ter a certeza de que aquele
arquivo (ou conexão) vá ser fechado, mesmo que algo
tenha falhado no decorrer do código.
Finally
Exercício
Exercício
• Considere um jogo de palavras em que o usuário deve
adivinhar a palavra correta.
• Cada palavra possui uma dica e o nome da palavra.
• Nesse jogo, há uma interface gráfica em swing que possui
um Jlabel com a dica da palavra a ser adivinhada, um
JTextField em que a palavra a ser adivinhada será digitada e
um Jbutton para confirmar se a palavra digitada está
correta.
• Crie na classe Palavra um método VerificaPalavra que
verifica se a palavra digitada pelo usuário está correta. Esse
método deve lançar exceção caso a palavra seja incorreta.
• Crie uma exceção, que vai ser disparada no seguinte caso:
– PalavraIncorretaException – é lançada quando o usuário errar a
palavra a ser adivinhada
Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia

Java: Excecoes e Tratamento de Erros

  • 1.
    Exceções e Tratamentode Erros Arthur Emanuel de Oliveira Carosia
  • 2.
    Introdução • Em sistemasde verdade, é muito comum que quem saiba tratar o erro é aquele que chamou o método e não a própria classe. • Portanto, nada mais natural do que a classe sinalizar que um erro ocorreu.
  • 3.
    Exceção • Uma exceçãorepresenta uma situação que normalmente não ocorre e representa algo de estranho ou inesperado no sistema. • O sistema de exceções do Java funciona da seguinte maneira: – quando uma exceção é lançada (throw), a JVM entra em estado de alerta e vai ver se o método atual toma alguma precaução ao tentar executar esse trecho de código.
  • 4.
    Exceções • Um códigoque vai tentar (try) executar o bloco perigoso de código e ele será pego (caught). • Cada exceção no Java tem um tipo e pode ter atributos e métodos.
  • 5.
    Exceções • Tratando-as nocódigo: try { //Código a ser ‘testado’ } catch (Exception e) { //Código que irá tratar a exceção //capturada }
  • 6.
    Exceções mais comuns •Divisão por zero • Correção
  • 7.
    Exceções mais comuns •Acessar posição inválida de array • Correção
  • 8.
    Exceções mais comuns •Referência para null tentando ser acessada • Correção
  • 9.
    Tipos de Exceções •Checked Exceptions – obriga a quem chama o método ou construtor a tratar essa exceção – o compilador checará se ela está sendo devidamente tratada • Unchecked Exceptions • o compilador não checará e não obrigará a exceção a ser tratada • Código pode ser compilado e executado
  • 10.
    • Abrir umarquivo sem tratar a Checked Exception • Resulta em erro • Código não é compilado Checked Exceptions
  • 11.
    Checked Exceptions • Solução1 – tratar com o try e catch
  • 12.
    Checked Exceptions • Solução2 – delegar o erro para quem chamou o nosso método, isto é, passar para a frente. – Avisa da possibilidade daquele método lançar exceção, obrigando o outro método que vá utilizar deste de se preocupar com essa exceção em questão.
  • 13.
    Checked Exceptions • Nãohá uma regra para decidir em que momento do seu programa você vai tratar determinada exceção. • Isso vai depender de em que ponto você tem condições de tomar uma decisão em relação àquele erro. • Enquanto não for o momento, você provavelmente vai preferir delegar a responsabilidade para o método que te invocou.
  • 14.
    Tratando mais deum erro • Com try/catch • Com throws
  • 15.
    Lançando Exceções • Apalavra chave throw lança uma Exception.
  • 16.
    Criar a PrópriaExceção • É bem comum criar uma própria classe de exceção para controlar melhor o uso de suas exceções. • Obrigar quem chamar o método a usar try/catch ou throws throw throws Try/catch Exceção Própria
  • 17.
    Finally... • Os blocostry e catch podem conter uma terceira cláusula chamada finally que indica o que deve ser feito após o término do bloco try ou de um catch qualquer. – algo que é imprescindível de ser executado, caso o que você queria fazer tenha dado certo, ou não – O caso mais comum é o de liberar um recurso no finally, como um arquivo ou conexão com banco de dados, para que possamos ter a certeza de que aquele arquivo (ou conexão) vá ser fechado, mesmo que algo tenha falhado no decorrer do código.
  • 18.
  • 19.
  • 20.
    Exercício • Considere umjogo de palavras em que o usuário deve adivinhar a palavra correta. • Cada palavra possui uma dica e o nome da palavra. • Nesse jogo, há uma interface gráfica em swing que possui um Jlabel com a dica da palavra a ser adivinhada, um JTextField em que a palavra a ser adivinhada será digitada e um Jbutton para confirmar se a palavra digitada está correta. • Crie na classe Palavra um método VerificaPalavra que verifica se a palavra digitada pelo usuário está correta. Esse método deve lançar exceção caso a palavra seja incorreta. • Crie uma exceção, que vai ser disparada no seguinte caso: – PalavraIncorretaException – é lançada quando o usuário errar a palavra a ser adivinhada
  • 21.
    Exceções e Tratamentode Erros Arthur Emanuel de Oliveira Carosia