Você está na página 1de 8

>>>>>>>>>>>>>>>>>> EXCEPTIONS <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

> Exeção;
> try, cath;
> Ex:

0, 1, 2, 3;

int[] vetor = new int[4];

System.out.println("Antes da exception"):

vetor[4] = 1; >>>> tentando acessar a posição 5; >>> A execução do programa


foi interrompida aqui;

System.out.println("Esse texto não será impresso");

try{

//bloco que é monitorado para erros;


> Tente executar esse código;
> Onde é feita a busca informação,e inserção informação no banco de dados;

catch(TipoDaException exception){

//tratamento do erro;
Exeções também são objetos;

> Tente executar esse código e caso ocorra um erro capture a exeção e trate o erro;

try{

int[] vetor = new int[4];

System.out.println("Antes da exception"):

vetor[4] = 1;

System.out.println("Esse texto não será impresso");

}catch(ArrayIndexOutOfBoundsException exception){

System.out.println("Exeção ao acessar um índice do vetor que não existe");

System.out.println("Esse texto será impresso depois da exception");

>>>>>> Não tratar erros fazem a execução do programa terminar!!Não tratar não é uma
boa prática;
>>>>>> Tratar erros:
- Permitem que o programa execute uma determinada lógica caso o erro ocorra;
- Permitem que o programa continue a execução;

>>>>>>>> COMO UTILIZAR MULTIPLOS CATCH <<<<<<<<<<

> Podemos ter vários catch um atrás do outro, precisa estar em baixo de um
catch existente;

- Ex:

int[] numeros = {4, 8, 16, 32, 64, 128};


int[] deno = {2, 0, 4, 8, 0};

for(int i = 0; i.numeros.length; i++){

try
{

System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException e1){

System.out.println("Erro ao dividir por zero");

catch(ArrayIndexOutOfBoundsException exception)
{
System.out.println("Posição de Array inválida!!");
}

>>>>>>>>>>> CAPTURANDO EXCEPTION GENÉRICA <<<<<<<<<<<<

> Usando a superclasse (Throwable) de erros e exeções, porém não é uma boa
prática...

> Ex:

int[] numeros = {4, 8, 16, 32, 64, 128};


int[] deno = {2, 0, 4, 8, 0};

for(int i = 0; i.numeros.length; i++){

try
{

System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException e1){

System.out.println("Erro ao dividir por zero");

catch(Throwable exception)
{
System.out.println("Ocorreu um erro!!");
}

>>>>>>>>>>>>>>> EXCEPTIONS SIMILARES (MESMA FAMÍLIA) <<<<<<<<<<<<<

> USA "|" (ou)


> Ex:

int[] numeros = {4, 8, 16, 32, 64, 128};


int[] deno = {2, 0, 4, 8, 0};

for(int i = 0; i.numeros.length; i++){

try
{

System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException | ArrayIndexOutOfBoundsException e1){

System.out.println("Aconteceu um erro! ");

>>> SEMPRE AS CLASSES DE CATCH ESPECÍFICAS PRIMEIROS!!

>>>>>>>> EXCEPTIONS: FINALLY <<<<<<<<<<<<

> Bloco de código que é executado depois do try ou catch;


- Abrir arquivo;
- Realizar leitura;
- Ocorre erro;
- Fechar arquivo no finally; >>>> Fecha conexão com o banco de dados;

> Ex:

int[] numeros = {4, 8, 16, 32, 64, 128};


int[] deno = {2, 0, 4, 8, 0};

for(int i = 0; i.numeros.length; i++){

try
{

System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException e1){

System.out.println("Erro ao dividir por zero");

catch(ArrayIndexOutOfBoundsException exception)
{
System.out.println("Posição de Array inválida!!");
}
finally {

System.out.println("Essa linha é sempre impressa após o try ou catch);

>>> O finally SEMPRE será executado!

>>>>>> PERGUNTA PEGADINHA <<<<<<<<<<<

try
{

System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException e1){

System.out.println("Erro ao dividir por zero"); >>>>> Vai terminar aqui.


System.exit(0);

catch(Throwable exception)
{
System.out.println("Ocorreu um erro!!");
System.exit(0);
}
finally{

System.out.println("Terminando a execução do bloco try");


System.out.println();

>>>>>> COM O: System.exit(0); o FINALLY NÃO É EXECUTADO!!


> Porque ela termina a execução do programa no primeiro erro!

>>>>>>>>>>>> CLASSE THROWABLE <<<<<<<<<<<<<<<<<<<

- Classe mãe de todas as exceptions;


- Generica;
- Possui métodos úteis;

> getMessage() >>>>>>> Retorna a descrição do erro;

> printStackTrace() >>>> Imprime o stack trace do erro >>>> Mostra em qual linha o
erro aconteceu;

>>>> NÃO USAR THROWABLE >>> USAR EXCEPTION <<<<<<<<<


- Como maneira genérica de achar erros;

- Ex:
catch(Exception exc)
{

System.out.println(exc.getMessage());
exc.printStrackTrace();

>>>>> ERROR: Resulta na finalização do programa;


>>>>> EXCEPTIONS: Possível tratar erro e continuar execução do programa;

>>>>>>> THROWS

- Utilizamos quando não queremos tratar a exeção;


- Método pode disparar uma Exception;
- Passa a responsabilidade para quem for utilizar o método;
- Exception disparadas em tempo de execução (ArrayOutOfBounds,Arithmetic)
não necessitam de throws explicitamente;

- Ex:

System.out.print("Entre com um número");


double num = leNumero();

//Se quiser tratar o erro:

try{

double num = leNumero();


System.out.println("Você digitou:" + num):

}
catch(Exception e)
{

System.out.println("Entrada inválida");
e.printStackTrace(); >>>>>>> Não devo deixar isso disponível para o usuário; Só usa
isso para nível de log
}

public static double leNumero() throws Exception


{

Scanner teclado = new Scanner(System.in);


double num = teclado.nextDouble();
return num;

>>>>>>>>>> TIPOS DE ERRO NO JAVA <<<<<<<<<<<<

- Cai em pergunta de entrevista de emprego;


- Error, Exception >>>> São subclasses da classe Throwable;
-> Error: Erro que acontece em tempo de execução; Faz com que o programa termine
sua execução;
- Não tem como tratar isso no Java;

-> Exception: Tem as verificadas e as não verificadas;

> UNCHECKED:
- Não verificadas: acontecem em tempo de execução do programa: RuntimeException;
não tem como o compilador prever isso; Só depois que ele ter as informações em
tempo de execução;
- NullPointerException >>> Tenta chamar um método de um objeto que não foi
instanciado;
- ClassCastException >>> Cast;

> CHECKED:
- Verficadas: IOException >>> Leitura ou escrita de arquivos;
- SQLExpetion
- O compilador vai pedir para tratar elas já no programa;

>>>>>>>>>> CRIANDO SUA PRÓPRIA EXCEÇÃO <<<<<<<<<<<<

> Ex:
>>> Exeção para dar só resultado inteiro;
>>> Sempre que um número for ímpar vou lançar a minha exeção;

int[] numeros = {4, 8, 5, 16, 32, 21, 64, 128};


int[] deno = {2, 0, 4, 8, 0, 2, 3};

for(int i = 0; i.numeros.length; i++){

try
{

if(numeros[i] % 2 != 0)
{
//lançar a expetion aqui

thrwow new Exception("Número ímpar, divisão naão exata");

}
System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException | ArrayIndexOutOfBoundsException e1){

System.out.println("Aconteceu um erro! ");

}
catch(Exception e)
{
System.out.print("Aconteceu um erro!");
System.out.print(getMessage());

>>>>>>>> CRIANDO DE VERDADE <<<<<<<<<


public class DivNaoExatas extends Exception
{

private int num;


private int dem;

public DivNaoExatas(int num, int dem)


{
super();
this.num = num;
this.dem = dem;

@Override
public String toString()
{
return "Resultado de " + num + "/" + dem + "não é um inteiro";

int[] numeros = {4, 8, 5, 16, 32, 21, 64, 128};


int[] deno = {2, 0, 4, 8, 0, 2, 3};

for(int i = 0; i.numeros.length; i++){

try
{

if(numeros[i] % 2 != 0)
{
//lançar a expetion aqui

thrwow new divNaoExatas(numeros[i], deno[i]);

}
System.out.println(numeros[i] + "/" + deno[i] + "=" + (numeros[i]/deno[i]));

}catch(ArithmeticException | ArrayIndexOutOfBoundsException | divNaoExatas e1){

System.out.println("Aconteceu um erro! ");

}
catch(Exception e)
{
System.out.print("Aconteceu um erro!");
System.out.print(getMessage());

http://www.slideshare.net/loianeg/curso-java-basico-exercicios-aulas-47-a-52
>>>>>>>>>>>>>>>> ACESSO A ARQUIVOS <<<<<<<<<<<<<<<<<,

- Banco de dados;
- Armazenamento local;
- Ler um arquivo que configure nosso sistema;
- Criar um arquivo para trocar info com outros sistemas;

String nomeDoArquivo = "estoque.csv";


String diretorio = System.getProperty("user.home");
String caminho = diretorio + "\\" + nomeDoArquivo;

List<String> conteudo = new ArrayList<>();


conteudo.add("Produto; Quantidade; Unidade de medida; Valor da unidade;");
conteudo.add("Pera; 200; pct; R$ 5,40;");
conteudo.add("Morango; 400; cx; R$ 6,50;");
conteudo.add("Abacaxi; 280; Un; R$ 5,00;");

gravarEstoque(nomeDoArquivo, caminho, conteudo);

Você também pode gostar