SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Exceções ,[object Object],[object Object]
Problema 1 ,[object Object]
Soluções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Problema 2 // ... Conta minhaConta =  new  Conta(); minhaConta.deposita(100); minhaConta.setLimite(100); minhaConta.saca(1000); //  o saldo é -900? É 100? É 0? // A chamada ao método saca funcionou?
Soluções public boolean  saca( double  quantidade) { if  (quantidade >  this .saldo +  this .limite) {  System.out.println( "Saque fora do limite!" ); return   false ; }  else  { this .saldo =  this .saldo – quantidade; return   true ; } } ,[object Object],[object Object]
Problema 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Por que usar exceções? ,[object Object],[object Object],[object Object]
Exceções ,[object Object],[object Object],[object Object],[object Object]
Pilha de Execução public class  TesteErro { public   static   void  main(String[] args) { System. out .println( &quot;inicio do main&quot; ); metodo1 (); System. out .println( &quot;fim do main&quot; ); } public   static   void  metodo1() { System. out .println( &quot;inicio do metodo1&quot; ); metodo2 (); System. out .println( &quot;fim do metodo1&quot; ); } public   static   void  metodo2() { System. out .println( &quot;inicio do metodo2&quot; ); int [] array =  new   int [10]; for  ( int  i = 0; i <= 15; i++) { array[i] = i; System. out .println(i); } System. out .println( &quot;fim do metodo2&quot; ); } }
Rastro da Pilha - Stacktrace Exception in thread &quot;main&quot;  java.lang.ArrayIndexOutOfBoundsException : 10 at TesteErro.metodo2( TesteErro.java:18 ) at TesteErro.metodo1( TesteErro.java:10 ) at TesteErro.main( TesteErro.java:4 )
Soluções try  { for ( int  i = 0; i <= 15; i++) { array[i] = i; System.out.println(i); } }  catch  (ArrayIndexOutOfBoundsException e) { System.out.println( &quot;erro: &quot;  + e); } for ( int  i = 0; i <= 15; i++) { try  { array[i] = i; System.out.println(i); }  catch  (ArrayIndexOutOfBoundsException e) { System.out.println( &quot;erro: &quot;  + e); } }
Bloco try ,[object Object],[object Object],[object Object],[object Object],[object Object]
Bloco catch ,[object Object],[object Object],[object Object]
Bloco finally ,[object Object]
Tratamento de Exceções
Exceções não checadas public   class  Exemplo09 { public   static   void  main(String args[]) { int  i = 5571; i = i / 0; System. out .println( &quot;O resultado &quot;  + i); } } Exception in thread &quot;main&quot;  java.lang.ArithmeticException : / by zero at Exemplo09.main( Exemplo09.java:4 )
Exceções não checadas public   class  Exemplo09 { public   static   void  main(String args[]) { Conta c =  null ; System. out .println( &quot;Saldo: &quot;  + c.getSaldo()); } } Exception in thread &quot;main&quot;  java.lang.NullPointerException at Exemplo09.main( Exemplo09.java:4 )
Exceções não checadas public   class  Exemplo09 { public   static   void  main(String args[]) { int  i = Integer. parseInt ( &quot;a&quot; ); System. out .println(i); } } Exception in thread &quot;main&quot;  java.lang.NumberFormatException : For input string: &quot;a&quot; at java.lang.NumberFormatException.forInputString( NumberFormatException.java:48 ) at java.lang.Integer.parseInt( Integer.java:447 ) at java.lang.Integer.parseInt( Integer.java:497 ) at Exemplo09.main( Exemplo09.java:3 )
Exceções não checadas ,[object Object],[object Object],[object Object]
Exceções checadas import  java.io.FileReader; public   class  Exemplo09 { public   static   void  main(String args[]) { FileReader f =  new  FileReader( &quot;teste.txt&quot; ); } } Exception in thread &quot;main&quot; java.lang.Error:  Unresolved compilation problem:  Unhandled exception type  FileNotFoundException at Exemplo09.main( Exemplo09.java:5 )
Tratamento de Exceções - catch import  java.io.FileNotFoundException; import  java.io.FileReader; public   class  Exemplo09 { public   static   void  main(String args[]) { try  { FileReader f =  new  FileReader( &quot;teste.txt&quot; ); }  catch  (FileNotFoundException e) { System. out .println( &quot;Arquivo não existe&quot; ); } } }
Propagação de Exceções - throws import  java.io.FileNotFoundException; import  java.io.FileReader; public   class  Exemplo09 { public   static   void  main(String args[])  throws  FileNotFoundException { FileReader f =  new  FileReader( &quot;teste.txt&quot; ); } }
Tratamento de Exceções
Tratamento de Exceções ,[object Object]
Tratamento de Exceções
Lançamento de Exceções public   class  Conta { double   saldo ; // ... public   boolean  saca( double  valor){ if ( this . saldo  < valor){ return   false ; }  else  { this . saldo -=valor; return   true ; } } // ... }
Lançamento de Exceções public   class  Conta { double   saldo ; // ... public   void  saca( double  valor){ if ( this . saldo  < valor){ throw   new  IllegalArgumentException( &quot;Saldo insuficiente&quot; ); }  else  { this . saldo -=valor; } } // ... }
IllegalArgumentException ,[object Object],[object Object],[object Object],[object Object],// ... Conta  cc  =  new  ContaCorrente(); cc.deposita(100); try { cc .saca(100); } catch (IllegalArgumentException e){ System.out.println(e.getMessage()); } // ...
Criando Exceções public   class  SaldoInsuficienteException  extends  RuntimeException { public  SaldoInsuficienteException(String message) { super (message); } }
Usando nossas exceções public   class  Conta { double   saldo ; // ... public   void  saca( double  valor){ if ( this . saldo  < valor){ throw   new  SaldoInsuficienteException( &quot;Use um valor menor&quot; ); }  else  { this . saldo -=valor; } } // ... } // ... Conta  cc  =  new  ContaCorrente(); cc.deposita(100); try { cc .saca(100); } catch (SaldoInsuficienteException e){ System.out.println(e.getMessage()); } // ...
Tratamento de Exceções ,[object Object],[object Object],[object Object]
Lançamento de Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hierarquia de Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hierarquia de Exceções
Hierarquia de Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hierarquia de Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hierarquia de Exceções ,[object Object],[object Object],[object Object]
Criando uma Exceção ,[object Object],[object Object],[object Object],[object Object],[object Object]
Criando uma Exceção
Exceções verificadas (checked) ou não verificadas (unchecked)? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exceções verificadas (checked) ou não verificadas (unchecked)? ,[object Object],[object Object],[object Object]
Resumo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Prática ,[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Exceptions in Java
Exceptions in JavaExceptions in Java
Exceptions in JavaVadym Lotar
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmosAdilio Tavares
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean CodeAndré Leoni
 
Types of exceptions
Types of exceptionsTypes of exceptions
Types of exceptionsmyrajendra
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoVinícius de Paula
 
OCA Java SE 8 Exam Chapter 6 Exceptions
OCA Java SE 8 Exam Chapter 6 ExceptionsOCA Java SE 8 Exam Chapter 6 Exceptions
OCA Java SE 8 Exam Chapter 6 Exceptionsİbrahim Kürce
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Eder Samaniego
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in javapooja kumari
 
Java exception handling ppt
Java exception handling pptJava exception handling ppt
Java exception handling pptJavabynataraJ
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 

Was ist angesagt? (20)

Exceptions in Java
Exceptions in JavaExceptions in Java
Exceptions in Java
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
 
Java exception
Java exception Java exception
Java exception
 
Java exception handling
Java exception handlingJava exception handling
Java exception handling
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Types of exceptions
Types of exceptionsTypes of exceptions
Types of exceptions
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de Projeto
 
OCA Java SE 8 Exam Chapter 6 Exceptions
OCA Java SE 8 Exam Chapter 6 ExceptionsOCA Java SE 8 Exam Chapter 6 Exceptions
OCA Java SE 8 Exam Chapter 6 Exceptions
 
Exception Handling in Java
Exception Handling in JavaException Handling in Java
Exception Handling in Java
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Java exception handling ppt
Java exception handling pptJava exception handling ppt
Java exception handling ppt
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Exception hierarchy
Exception hierarchyException hierarchy
Exception hierarchy
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 

Ähnlich wie Como tratar exceções em Java de forma correta

Excecoes
ExcecoesExcecoes
ExcecoesEMSNEWS
 
Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3guestd6da1cd
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em JavaWilson Júnior
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: ExceçõesEduardo Mendes
 
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
 
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
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesFAFICA
 

Ähnlich wie Como tratar exceções em Java de forma correta (20)

Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Java3
Java3Java3
Java3
 
Excecoes
ExcecoesExcecoes
Excecoes
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: Exceções
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
JAVA - Tratamento de Erros
JAVA - Tratamento de ErrosJAVA - Tratamento de Erros
JAVA - Tratamento de Erros
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
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
 
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)
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 

Mehr von Regis Magalhães

Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 

Mehr von Regis Magalhães (20)

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 

Como tratar exceções em Java de forma correta

  • 1.
  • 2.
  • 3.
  • 4. Problema 2 // ... Conta minhaConta = new Conta(); minhaConta.deposita(100); minhaConta.setLimite(100); minhaConta.saca(1000); // o saldo é -900? É 100? É 0? // A chamada ao método saca funcionou?
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Pilha de Execução public class TesteErro { public static void main(String[] args) { System. out .println( &quot;inicio do main&quot; ); metodo1 (); System. out .println( &quot;fim do main&quot; ); } public static void metodo1() { System. out .println( &quot;inicio do metodo1&quot; ); metodo2 (); System. out .println( &quot;fim do metodo1&quot; ); } public static void metodo2() { System. out .println( &quot;inicio do metodo2&quot; ); int [] array = new int [10]; for ( int i = 0; i <= 15; i++) { array[i] = i; System. out .println(i); } System. out .println( &quot;fim do metodo2&quot; ); } }
  • 11. Rastro da Pilha - Stacktrace Exception in thread &quot;main&quot; java.lang.ArrayIndexOutOfBoundsException : 10 at TesteErro.metodo2( TesteErro.java:18 ) at TesteErro.metodo1( TesteErro.java:10 ) at TesteErro.main( TesteErro.java:4 )
  • 12. Soluções try { for ( int i = 0; i <= 15; i++) { array[i] = i; System.out.println(i); } } catch (ArrayIndexOutOfBoundsException e) { System.out.println( &quot;erro: &quot; + e); } for ( int i = 0; i <= 15; i++) { try { array[i] = i; System.out.println(i); } catch (ArrayIndexOutOfBoundsException e) { System.out.println( &quot;erro: &quot; + e); } }
  • 13.
  • 14.
  • 15.
  • 17. Exceções não checadas public class Exemplo09 { public static void main(String args[]) { int i = 5571; i = i / 0; System. out .println( &quot;O resultado &quot; + i); } } Exception in thread &quot;main&quot; java.lang.ArithmeticException : / by zero at Exemplo09.main( Exemplo09.java:4 )
  • 18. Exceções não checadas public class Exemplo09 { public static void main(String args[]) { Conta c = null ; System. out .println( &quot;Saldo: &quot; + c.getSaldo()); } } Exception in thread &quot;main&quot; java.lang.NullPointerException at Exemplo09.main( Exemplo09.java:4 )
  • 19. Exceções não checadas public class Exemplo09 { public static void main(String args[]) { int i = Integer. parseInt ( &quot;a&quot; ); System. out .println(i); } } Exception in thread &quot;main&quot; java.lang.NumberFormatException : For input string: &quot;a&quot; at java.lang.NumberFormatException.forInputString( NumberFormatException.java:48 ) at java.lang.Integer.parseInt( Integer.java:447 ) at java.lang.Integer.parseInt( Integer.java:497 ) at Exemplo09.main( Exemplo09.java:3 )
  • 20.
  • 21. Exceções checadas import java.io.FileReader; public class Exemplo09 { public static void main(String args[]) { FileReader f = new FileReader( &quot;teste.txt&quot; ); } } Exception in thread &quot;main&quot; java.lang.Error: Unresolved compilation problem: Unhandled exception type FileNotFoundException at Exemplo09.main( Exemplo09.java:5 )
  • 22. Tratamento de Exceções - catch import java.io.FileNotFoundException; import java.io.FileReader; public class Exemplo09 { public static void main(String args[]) { try { FileReader f = new FileReader( &quot;teste.txt&quot; ); } catch (FileNotFoundException e) { System. out .println( &quot;Arquivo não existe&quot; ); } } }
  • 23. Propagação de Exceções - throws import java.io.FileNotFoundException; import java.io.FileReader; public class Exemplo09 { public static void main(String args[]) throws FileNotFoundException { FileReader f = new FileReader( &quot;teste.txt&quot; ); } }
  • 25.
  • 27. Lançamento de Exceções public class Conta { double saldo ; // ... public boolean saca( double valor){ if ( this . saldo < valor){ return false ; } else { this . saldo -=valor; return true ; } } // ... }
  • 28. Lançamento de Exceções public class Conta { double saldo ; // ... public void saca( double valor){ if ( this . saldo < valor){ throw new IllegalArgumentException( &quot;Saldo insuficiente&quot; ); } else { this . saldo -=valor; } } // ... }
  • 29.
  • 30. Criando Exceções public class SaldoInsuficienteException extends RuntimeException { public SaldoInsuficienteException(String message) { super (message); } }
  • 31. Usando nossas exceções public class Conta { double saldo ; // ... public void saca( double valor){ if ( this . saldo < valor){ throw new SaldoInsuficienteException( &quot;Use um valor menor&quot; ); } else { this . saldo -=valor; } } // ... } // ... Conta cc = new ContaCorrente(); cc.deposita(100); try { cc .saca(100); } catch (SaldoInsuficienteException e){ System.out.println(e.getMessage()); } // ...
  • 32.
  • 33.
  • 34.
  • 36.
  • 37.
  • 38.
  • 39.
  • 41.
  • 42.
  • 43.
  • 44.