0% acharam este documento útil (0 voto)
154 visualizações23 páginas

Exceções e Controle de Erros

Exceções são erros que ocorrem durante a execução de um programa. O tratamento de exceções com try/catch permite que o programa continue executando mesmo quando erros ocorrem, enquanto finally garante que código crítico seja executado independente de erros. throw lança exceções para métodos chamadores tratarem, enquanto throws informa quais exceções um método pode lançar.

Enviado por

Jhonatan Viana
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
154 visualizações23 páginas

Exceções e Controle de Erros

Exceções são erros que ocorrem durante a execução de um programa. O tratamento de exceções com try/catch permite que o programa continue executando mesmo quando erros ocorrem, enquanto finally garante que código crítico seja executado independente de erros. throw lança exceções para métodos chamadores tratarem, enquanto throws informa quais exceções um método pode lançar.

Enviado por

Jhonatan Viana
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 23

POO

Exceções e controle de erros


O que é
 Quando se cria um programa existem 3 tipos de
erro que podem ocorrer:
 Erros de Sintaxe – Identificados pelo
compilador/interpretador
 Erros de logica – que são tratados pelo processo de
teste
 Erros de tempo de execução – que ocorrem por
diversos fatores e podem levar a falhas criticas
O que é
 Os erros em tempo de execução pode ter diversas
origens e causas, e por muitas vezes a logica do
algoritmo nao podem lidar com elas, Podemos citar:
 Tentar abrir um arquivo que não existe.
 Tentar fazer consulta a um banco de dados que não está
disponível.
 Tentar escrever algo em um arquivo sobre o qual não se
tem permissão de escrita.
 Tentar conectar em servidor inexistente.
O que é
 Estes erros imprevistos durante a execução, são
conhecidos como exceções
 Alguns possíveis erros de lógica para ocorrer uma
exceção são:
 Tentar manipular um objeto que está com o valor nulo.
 Dividir um número por zero.
 Tentar manipular um tipo de dado como se fosse outro.
 Tentar utilizar um método ou classe não existentes.
Tratando Exceções
 Pode permitir que o programa continue executando
como se nenhum problema tivesse sido encontrado
 Pode impedir um programa de continuar executando
normalmente em vez de requer que o problema seja
informado
 É necessário que os programadores escrevam
programas robustos e tolerantes a falhas
Tratando Exceções
 Vantagens
 Úteis para informar ao usuário erros causados por
informação de dados errados ou inválidos
 Mascaramento de erros técnicos complexos ao usuário
 Tomada de ações independentes da ação ou
intervenção do usuário
 Separação e organização do fluxo do programa
try catch
 Uma maneira de tentar contornar esses imprevistos é
realizar o tratamento dos locais no código que podem
vir a lançar possíveis exceções, como por exemplo,
campo de consulta a banco de dados, locais em que
há divisões, consulta a arquivos de propriedades ou
arquivos dentro do próprio computador.

 Para tratar as exceções em Java são utilizados os


comandos try e catch.
try catch
try
{
//linhas de comando que podem lançar uma exceção
}
catch(tipo_exceçao_1 e)
{
//ação a ser tomada
}
catch(tipo_exceçao_n e)
{
//ação a ser tomada
}
try catch
 try{ … } - Neste bloco são introduzidas todas as
linhas de código que podem vir a lançar uma
exceção.
 catch(tipo_excessao e) { … } - Neste bloco é
descrita a ação que ocorrerá quando a exceção for
capturada.
try catch
public float dividir(float a, float b)
{
float r = 0;
try
{
r = a/b;
}
catch(Exception err){
System.out.println(“Divisão por Zero!”);
}
return r;
}
try catch
public String concatenar(String t1, String t2)
{
string r = “”;
try
{
r = t1 + “ “+ t2;
}
catch(NullPointerException e){
r = “Frase vazia !!!”;
}
catch(Exception err){
System.out.println(“Ocorreu um erro”+ err.geMessage());
}
return r;
}
finally
 Comando que é sempre executado, tendo ou não ocorrido
uma exceção durante a execução do código dentro do try
 É utilizado para liberação de recursos, mesmo se algum erro
ocorra
 Quando utilizamos o try/catch, se alguma coisa dá errada no
meio do try, ele o INTERROMPE para entrar no catch, ou
seja, o código dentro do try DEPOIS do erro não será
executado
 Se existe algo importante a ser executado no código, de modo
que, ocorrendo algum erro ou não, isso deva ser feito, pode-
se utilizar o finally
finally
 Exemplos de utilização do comando finally:
 foi aberta uma conexão com o banco de dados para realizar determinada
ação, e no meio deste processo seja lançada alguma exceção, como por
exemplo, NullPointerException ao tentar manipular um determinado
atributo de um objeto.
 Neste caso seria necessário que mesmo sendo lançada uma exceção no meio do
processo a conexão fosse fechada.
 Um outro exemplo bom seria a abertura de determinado arquivo para escrita
no mesmo, e no meio deste processo é lançada uma exceção por algum
motivo, o arquivo não seria fechado, o que resultaria em deixar o arquivo
aberto.
 Quando uma exceção é lançada e é necessário que determinada ação
seja tomada mesmo após a sua captura, utilizamos a palavra reservada
finally.
finally
try
{
//linhas de comando que podem lançar uma exceção
}
catch(tipo_exceçao_1 e)
{
//ação a ser tomada
}
finally
{
//ação a ser tomada
}
finally
public String concatenar(String t1, String t2)
{
string r = “”;
try
{
r = t1 + “ “+ t2;
}
catch(Exception e){
r = “Frase vazia !!!”;
}
finally{
return r.toUpperCase();
}
}
throw e throws
 Imagine uma situação em que não é desejado que
uma exceção seja tratada na própria classe ou
método, mas sim em outro que venha lhe chamar.
Para solucionar tal situação utilizamos o comando
throws na assinatura do método com a possível
exceção que o mesmo poderá a vir lançar.
throw e throws
 Ato de “lançar uma exceção” para o método chamador
 Permite que o programa force a detecção de uma exceção em
determinada situação
 Pode ou não exigir o tratamento do chamador – Mas transfere o
controle do fluxo para eles
 Também é uma cláusula para dizer qual exceção um determinado
método irá provocar caso algum erro específico ocorra
 Útil para se obter uma maneira padronizada de tratar erros
causados pelo usuário, e não pelo sistema
 Exemplos: digitação de CPF inválido, data inválida, campos
obrigatórios não informados em um sistema
throw e throws
tipo_retorno nome_metodo() throws
tipo_exceção_1, tipo_exceção_2,
tipo_exceção_n
{

}
throw e throws
public class TesteString { public static void main(String
//lançando excessão args[])
{
private static void
aumentarLetras() throws try
NullPointerException {
{ aumentarLetras();
String frase = null; }
catch(NullPointerException e)
String novaFrase = null;
{
novaFrase =
System.out.println("Ocorreu
frase.toUpperCase();
um
System.out.println("Frase
NullPointerException ao
antiga: "+frase); executar o método
System.out.println("Frase aumentarLetras() "+e);
nova: "+novaFrase); }
} }
}
throw e throws
 Agora imagine o caso em que seja necessário
lançar uma exceção padrão ao invés de uma
especifica. Para resolver este problema, utilizamos
o comando throw dentro do bloco catch que
desejamos converter a exceção.
throw e throws
public class Agenda {
public void mostraDetalhes(String cpf)
throws NullPointerException
{
if(cpf==null){
throw new NullPointerException(“Cpf invalido”);
} else {
System.out.println(“Cpf ok!”);
}
}
throw e throws
 Essa exceção poderia então ser tratada de acordo
com os formatos de tela do sistema, colocando
assim o sistema funcionando sobre um padrão de
mensagens de erro
Overview
 A robustez de um programa esta estritamente ligada
como seus erros são tratados, em poo isto e mais
importante pois a reutilização do codigo e praxe.
 Ao expor uma classe em novos sistemas e
consequentemente a novas situações estes controles
de execeções são vitais.

Você também pode gostar