SlideShare uma empresa Scribd logo
1 de 36
Tratamento de Erros Gerenciamento de erros com Exceções em Java
O que é uma exceção ? ,[object Object],[object Object]
O que ocasiona uma exceção ?  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Quando ocorre um erro ... ,[object Object],[object Object]
uma exceção é lançada ! ,[object Object],[object Object]
Quando uma exceção é lançada... ,[object Object],[object Object],[object Object]
busca-se um  exception handler ,[object Object],[object Object],[object Object]
Se ele não é encontrado... ,[object Object]
Principal vantagem da manipulação de erros por exceções ,[object Object],lerArquivo()  { abrir o arquivo; determinar seu tamanho; alocar memória suficiente; ler o arquivo para a memória fechar o arquivo; }
Tratamento “complicado” de erros tipoErro leArquivo() { tipoErro códigoErro = 0; abrir arquivo; se (arquivo abriu) então { determinar tamanho do arquivo; se (conseguiu obter tamanho do arquivo) então { alocar memória suficiente; se (conseguiu memória suficiente) então { ler o arquivo para memória; se (leitura falhou) então códigoErro = -1; }  senão códigoErro = -2 } senão  códigoErro = -3 fechar o arquivo; se (arquivo não fechou) códigoErro = -4  } senão códigoErro = -5 retorne códigoErro; }
[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],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Tratamento “fácil” de erros
Se bem que... ,[object Object],[object Object]
Terminologia das exceções: ,[object Object],[object Object],[object Object],[object Object],[object Object]
Palavras chave Java para o tratamento de exceções: ,[object Object],[object Object],[object Object],[object Object],[object Object]
Formato geral do código para lançar e tratar exceções try  { //código que pode gerar uma exceção }  catch (Exception e) //captura a exceção { //código para tratar a exceção } finally { } void método1()  throws  IOException { //código que pode gerar uma IOException } void método2()  throws  IOException { //testa condição de exceção if (excep)then  throw  (new IOException()); } Captura  da Exceção Passagem da  Exceção pelo  Método Lançamento de Exceções
Exemplo sem tratamento de exceção ,[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]
Exemplo com tratamento de exceção ,[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],[object Object],[object Object]
Mais um exemplo: class Conta { public static void main (String args[]) { int divisor = 0; int numero = 30; int indice = 100; int c[] = {1}; try { int resultado = numero / divisor;  c[indice] = resultado; } catch (ArithmeticException a) { System.out.println("Divisão por zero"); divisor = 1; }  catch (IndexOutOfBoundsException x) { System.out.println("Estourou o índice do array"); indice = 0; } } }
Variações sobre o mesmo exemplo: class Conta { public static void main (String args[]) { int divisor = 0; int numero = 30; int indice = 100; int c[] = {1}; try { int resultado = numero / divisor;  try { c[indice] = resultado; } catch (IndexOutOfBoundsException x) { System.out.println("Estourou o índice do array"); indice = 0; } } catch (ArithmeticException a) { System.out.println("Divisão por zero"); divisor = 1; }  } }
Um exemplo diferente... import java.io.*; public class LeArquivo { private FileReader entrada; public LeArquivo(String nomeArquivo)  { entrada = new FileReader(nomeArquivo); } public String pegaPalavra()  { int c; StringBuffer buf = new StringBuffer(); do { c = entrada.read(); if (Character.isWhitespace((char)c)) return buf.toString(); else buf.append((char)c); } while (c != -1); return buf.toString(); } }
...que não compila ! C:gt;javac LeArquivo.java LeArquivo.java:7: Exception java.io.FileNotFoundException must  be caught, or it must be declared in the throws clause of  this constructor. entrada = new FileReader(nomeArquivo); ^ LeArquivo.java:15: Exception java.io.IOException must be  caught, or it must be declared in the throws clause of  this method. c = entrada.read(); ^ 2 errors Pois o compilador sabe que, em ambos os métodos, estão sendo utilizadas instruções que podem ocasionar erro e,  portanto, que lançam exceções. Só que estas exceções  não estão sendo tratadas
Possíveis soluções:  ,[object Object],[object Object],[object Object]
Agora o exemplo compila ! import java.io.*; public class LeArquivoOK { private FileReader entrada; public LeArquivoOK(String nomeArquivo)  throws FileNotFoundException { entrada = new FileReader(nomeArquivo); } public String pegaPalavra()  throws IOException { int c; StringBuffer buf = new StringBuffer(); do { c = entrada.read(); if (Character.isWhitespace((char)c)) return buf.toString(); else buf.append((char)c); } while (c != -1); return buf.toString(); } }
Throws ,[object Object],[object Object]
E quem usa tem que fazer o seguinte... import java.io.*; import LeArquivoOK; public class TesteLeArquivosOK { public static void main (String args[]) { LeArquivoOK l; try { l = new LeArquivoOK(”123DeOliveira4.txt"); } catch (FileNotFoundException f) { System.out.println("Deu pau ! " + f.getMessage()); f.printStackTrace(); } System.out.println("Abriu"); } }
Ou algo um pouco mais sofisticado... import LeArquivoOK; import java.io.*; public class TesteLeArquivosOK { private LeArquivoOK l; private String nomeArq = "12345678.txt";  private boolean abriu = false;  public void tentaAbrir() { while (!abriu) { try { l = new LeArquivoOK(nomeArq); abriu = true; } catch (FileNotFoundException f) { System.out.println("Deu pau ! " + f.getMessage()+""); f.printStackTrace(); nomeArq = "c:autoexec.bat"; } } // while System.out.println("Abriu o arquivo " + nomeArq); } public static void main (String args[]) { TesteLeArquivosOK t = new TesteLeArquivosOK();  t.tentaAbrir(); }  }
Favor tentar fazer o seguinte: ,[object Object]
throw ,[object Object],[object Object],[object Object]
Exemplo do uso de  throw public Object pop() throws EmptyStackException  { Object obj; if (size == 0) throw new EmptyStackException(); obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; }
Cláusula  finally ,[object Object],try  { //código que pode gerar uma exceção }  catch (Exception e) //captura a exceção { //código para tratar a exceção } finally { } Captura  da Exceção ,[object Object]
Cláusula  finally ,[object Object],[object Object]
Um exemplo do uso de  finally public void exemploBobo()  { PrintWriter saida = null; try  { System.out.println(&quot;Entrando no bloco try&quot;); saida = new PrintWriter(new FileWriter(&quot;ArqSaida.txt&quot;)); for (int i = 0; i < tamanho; i++) saida.println(&quot;Valor em: &quot; + i + &quot; = &quot; + vetor.elementAt(i)); }  catch (ArrayIndexOutOfBoundsException e)  { System.err.println(&quot;Capturada ArrayIndexOutOfBoundsException: &quot; +e.getMessage()); }  catch (IOException e)  { System.err.println(&quot;Capturada IOException: &quot; + e.getMessage()); }  finally  { if (saida != null)  { System.out.println(&quot;Fechando o PrintWriter&quot;); saida.close(); }  else  { System.out.println(&quot;O PrintWriter não chegou a abrir&quot;); } } }
Para encerrar: espiada em algumas classes de exceção (1/4) java.lang.Object | +--java.lang.Throwable | +--java.lang.Exception | +--AclNotFoundException  +--ActivationException,  +--AlreadyBoundException,  +--ApplicationException,  +--AWTException, +--BadLocationException,  +--ClassNotFoundException,  +--CloneNotSupportedException,  +--DataFormatException, +--ExpandVetoException,  +--GeneralSecurityException,  +--IllegalAccessException,  +--InstantiationException,  +--InterruptedException,
Para encerrar: espiada em algumas classes de exceção  (2/4) +--IntrospectionException,  +--InvocationTargetException,  +--IOException |  | |  +--ChangedCharSetException,  |  +--CharConversionException,  |  +--EOFException,  |  +--FileNotFoundException,  |  +--InterruptedIOException, |  +--MalformedURLException,  |  +--ObjectStreamException,  |  +--ProtocolException,  |  +--RemoteException,  |  +--SocketException, |  +--SyncFailedException,  |  +--UnknownHostException,  |  +--UnknownServiceException,  |  +--UnsupportedEncodingException, |  +--UTFDataFormatException,  |  +--ZipException
Para encerrar: espiada em algumas classes de exceção  (3/4) +--LastOwnerException, +--NoninvertibleTransformException,  +--NoSuchFieldException,  +--NoSuchMethodException,  +--NotBoundException, +--NotOwnerException,  +--ParseException,  +--PrinterException,  +--PrivilegedActionException,  +--PropertyVetoException, +--RemarshalException,  +--RuntimeException,  |  | |  +--ArithmeticException,  |  +--ArrayStoreException,  |  +--CannotRedoException,  |  +--CannotUndoException,  |  +--ClassCastException, |  +--CMMException,
Para encerrar: espiada em algumas classes de exceção  (4/4) |  +--ConcurrentModificationException,  |  +--EmptyStackException,  |  +--IllegalArgumentException, |  +--IllegalMonitorStateException,  |  +--IllegalPathStateException,  |  +--IllegalStateException,  |  +--ImagingOpException, |  +--IndexOutOfBoundsException,  |  +--MissingResourceException,  |  +--NegativeArraySizeException,  |  +--NoSuchElementException, |  +--NullPointerException,  |  +--ProfileDataException,  |  +--ProviderException,  |  +--RasterFormatException,  |  +--SecurityException, |  +--SystemException,  |  +--UnsupportedOperationException  +--ServerNotActiveException,  +--SQLException,  +--TooManyListenersException, +--UnsupportedFlavorException,  +--UnsupportedLookAndFeelException,

Mais conteúdo relacionado

Mais procurados

Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
elliando dias
 

Mais procurados (19)

Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
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
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
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)
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Teste unitário
Teste unitárioTeste unitário
Teste unitário
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
 
UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28
 
Ferramentas testes2003
Ferramentas testes2003Ferramentas testes2003
Ferramentas testes2003
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 

Destaque

Webpages2
Webpages2Webpages2
Webpages2
EMSNEWS
 
Teclas de atalho
Teclas de atalhoTeclas de atalho
Teclas de atalho
EMSNEWS
 
Cabeamento de redes
Cabeamento de redesCabeamento de redes
Cabeamento de redes
EMSNEWS
 
Java script
Java scriptJava script
Java script
EMSNEWS
 
Webpages
WebpagesWebpages
Webpages
EMSNEWS
 
Presentationsprogram workshop 2
Presentationsprogram workshop 2Presentationsprogram workshop 2
Presentationsprogram workshop 2
ITdidaktiker
 
Tabela de cores em html
Tabela de cores em htmlTabela de cores em html
Tabela de cores em html
EMSNEWS
 
Castro alves espumas flutuantes
Castro alves   espumas flutuantesCastro alves   espumas flutuantes
Castro alves espumas flutuantes
EMSNEWS
 

Destaque (20)

As 400
As 400As 400
As 400
 
Aglets
AgletsAglets
Aglets
 
Applets
AppletsApplets
Applets
 
Webpages2
Webpages2Webpages2
Webpages2
 
Atag10
Atag10Atag10
Atag10
 
Adoptie van buitenlandse kinderen
Adoptie van buitenlandse kinderenAdoptie van buitenlandse kinderen
Adoptie van buitenlandse kinderen
 
Teclas de atalho
Teclas de atalhoTeclas de atalho
Teclas de atalho
 
Html
HtmlHtml
Html
 
Guia5
Guia5Guia5
Guia5
 
Novos Versos Gameleiros
Novos Versos GameleirosNovos Versos Gameleiros
Novos Versos Gameleiros
 
01 m030 43062
01 m030 4306201 m030 43062
01 m030 43062
 
Cabeamento de redes
Cabeamento de redesCabeamento de redes
Cabeamento de redes
 
Java script
Java scriptJava script
Java script
 
Apple Dental
Apple DentalApple Dental
Apple Dental
 
Webpages
WebpagesWebpages
Webpages
 
Presentationsprogram workshop 2
Presentationsprogram workshop 2Presentationsprogram workshop 2
Presentationsprogram workshop 2
 
Tabela de cores em html
Tabela de cores em htmlTabela de cores em html
Tabela de cores em html
 
Castro alves espumas flutuantes
Castro alves   espumas flutuantesCastro alves   espumas flutuantes
Castro alves espumas flutuantes
 
De hora em hora de "Ruth Rocha"
De hora em hora de "Ruth Rocha"De hora em hora de "Ruth Rocha"
De hora em hora de "Ruth Rocha"
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & Textspeak
 

Semelhante a Excecoes

Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
Verônica Veiga
 
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
guestd6da1cd
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
Natanael Fonseca
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
Higor Klecyus
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
samuelthiago
 
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
Maurício Linhares
 

Semelhante a Excecoes (20)

Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
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
 
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
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
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
 
Tratamento de exceções com PHP
Tratamento de exceções com PHPTratamento de exceções com PHP
Tratamento de exceções com PHP
 
Java3
Java3Java3
Java3
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
 
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
 
Java Básico :: Exceções
Java Básico :: ExceçõesJava Básico :: Exceções
Java Básico :: Exceções
 

Mais de EMSNEWS

Html completo
Html completoHtml completo
Html completo
EMSNEWS
 
Fontes chaveadas
Fontes chaveadasFontes chaveadas
Fontes chaveadas
EMSNEWS
 
Cabeamentos e conectores
Cabeamentos e conectores Cabeamentos e conectores
Cabeamentos e conectores
EMSNEWS
 
Aterramento
AterramentoAterramento
Aterramento
EMSNEWS
 
Aspectos transistores
Aspectos transistoresAspectos transistores
Aspectos transistores
EMSNEWS
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentium
EMSNEWS
 
Arquitetura ibm pc
Arquitetura ibm pcArquitetura ibm pc
Arquitetura ibm pc
EMSNEWS
 
Apostila wireless
Apostila wirelessApostila wireless
Apostila wireless
EMSNEWS
 
Tutorial de macromedia flash
Tutorial de macromedia flashTutorial de macromedia flash
Tutorial de macromedia flash
EMSNEWS
 
Pdf portugues
Pdf portuguesPdf portugues
Pdf portugues
EMSNEWS
 
Pdf literatura
Pdf literaturaPdf literatura
Pdf literatura
EMSNEWS
 
Apostila wireless
Apostila wirelessApostila wireless
Apostila wireless
EMSNEWS
 
Apostila de som_(pdf)
Apostila de som_(pdf)Apostila de som_(pdf)
Apostila de som_(pdf)
EMSNEWS
 

Mais de EMSNEWS (19)

Assign
AssignAssign
Assign
 
Guia4
Guia4Guia4
Guia4
 
Html
HtmlHtml
Html
 
Html completo
Html completoHtml completo
Html completo
 
Fontes chaveadas
Fontes chaveadasFontes chaveadas
Fontes chaveadas
 
Cabeamentos e conectores
Cabeamentos e conectores Cabeamentos e conectores
Cabeamentos e conectores
 
Básico
BásicoBásico
Básico
 
Aterramento
AterramentoAterramento
Aterramento
 
Aspectos transistores
Aspectos transistoresAspectos transistores
Aspectos transistores
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentium
 
Arquitetura ibm pc
Arquitetura ibm pcArquitetura ibm pc
Arquitetura ibm pc
 
Apostila wireless
Apostila wirelessApostila wireless
Apostila wireless
 
Tutorial de macromedia flash
Tutorial de macromedia flashTutorial de macromedia flash
Tutorial de macromedia flash
 
Cd rom
Cd romCd rom
Cd rom
 
Pdf portugues
Pdf portuguesPdf portugues
Pdf portugues
 
Pdf literatura
Pdf literaturaPdf literatura
Pdf literatura
 
Apostila wireless
Apostila wirelessApostila wireless
Apostila wireless
 
Autocad
AutocadAutocad
Autocad
 
Apostila de som_(pdf)
Apostila de som_(pdf)Apostila de som_(pdf)
Apostila de som_(pdf)
 

Último

19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
AntonioVieira539017
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
lenapinto
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 

Último (20)

Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDF
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 

Excecoes

  • 1. Tratamento de Erros Gerenciamento de erros com Exceções em Java
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Tratamento “complicado” de erros tipoErro leArquivo() { tipoErro códigoErro = 0; abrir arquivo; se (arquivo abriu) então { determinar tamanho do arquivo; se (conseguiu obter tamanho do arquivo) então { alocar memória suficiente; se (conseguiu memória suficiente) então { ler o arquivo para memória; se (leitura falhou) então códigoErro = -1; } senão códigoErro = -2 } senão códigoErro = -3 fechar o arquivo; se (arquivo não fechou) códigoErro = -4 } senão códigoErro = -5 retorne códigoErro; }
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Formato geral do código para lançar e tratar exceções try { //código que pode gerar uma exceção } catch (Exception e) //captura a exceção { //código para tratar a exceção } finally { } void método1() throws IOException { //código que pode gerar uma IOException } void método2() throws IOException { //testa condição de exceção if (excep)then throw (new IOException()); } Captura da Exceção Passagem da Exceção pelo Método Lançamento de Exceções
  • 16.
  • 17.
  • 18. Mais um exemplo: class Conta { public static void main (String args[]) { int divisor = 0; int numero = 30; int indice = 100; int c[] = {1}; try { int resultado = numero / divisor; c[indice] = resultado; } catch (ArithmeticException a) { System.out.println(&quot;Divisão por zero&quot;); divisor = 1; } catch (IndexOutOfBoundsException x) { System.out.println(&quot;Estourou o índice do array&quot;); indice = 0; } } }
  • 19. Variações sobre o mesmo exemplo: class Conta { public static void main (String args[]) { int divisor = 0; int numero = 30; int indice = 100; int c[] = {1}; try { int resultado = numero / divisor; try { c[indice] = resultado; } catch (IndexOutOfBoundsException x) { System.out.println(&quot;Estourou o índice do array&quot;); indice = 0; } } catch (ArithmeticException a) { System.out.println(&quot;Divisão por zero&quot;); divisor = 1; } } }
  • 20. Um exemplo diferente... import java.io.*; public class LeArquivo { private FileReader entrada; public LeArquivo(String nomeArquivo) { entrada = new FileReader(nomeArquivo); } public String pegaPalavra() { int c; StringBuffer buf = new StringBuffer(); do { c = entrada.read(); if (Character.isWhitespace((char)c)) return buf.toString(); else buf.append((char)c); } while (c != -1); return buf.toString(); } }
  • 21. ...que não compila ! C:gt;javac LeArquivo.java LeArquivo.java:7: Exception java.io.FileNotFoundException must be caught, or it must be declared in the throws clause of this constructor. entrada = new FileReader(nomeArquivo); ^ LeArquivo.java:15: Exception java.io.IOException must be caught, or it must be declared in the throws clause of this method. c = entrada.read(); ^ 2 errors Pois o compilador sabe que, em ambos os métodos, estão sendo utilizadas instruções que podem ocasionar erro e, portanto, que lançam exceções. Só que estas exceções não estão sendo tratadas
  • 22.
  • 23. Agora o exemplo compila ! import java.io.*; public class LeArquivoOK { private FileReader entrada; public LeArquivoOK(String nomeArquivo) throws FileNotFoundException { entrada = new FileReader(nomeArquivo); } public String pegaPalavra() throws IOException { int c; StringBuffer buf = new StringBuffer(); do { c = entrada.read(); if (Character.isWhitespace((char)c)) return buf.toString(); else buf.append((char)c); } while (c != -1); return buf.toString(); } }
  • 24.
  • 25. E quem usa tem que fazer o seguinte... import java.io.*; import LeArquivoOK; public class TesteLeArquivosOK { public static void main (String args[]) { LeArquivoOK l; try { l = new LeArquivoOK(”123DeOliveira4.txt&quot;); } catch (FileNotFoundException f) { System.out.println(&quot;Deu pau ! &quot; + f.getMessage()); f.printStackTrace(); } System.out.println(&quot;Abriu&quot;); } }
  • 26. Ou algo um pouco mais sofisticado... import LeArquivoOK; import java.io.*; public class TesteLeArquivosOK { private LeArquivoOK l; private String nomeArq = &quot;12345678.txt&quot;; private boolean abriu = false; public void tentaAbrir() { while (!abriu) { try { l = new LeArquivoOK(nomeArq); abriu = true; } catch (FileNotFoundException f) { System.out.println(&quot;Deu pau ! &quot; + f.getMessage()+&quot;&quot;); f.printStackTrace(); nomeArq = &quot;c:autoexec.bat&quot;; } } // while System.out.println(&quot;Abriu o arquivo &quot; + nomeArq); } public static void main (String args[]) { TesteLeArquivosOK t = new TesteLeArquivosOK(); t.tentaAbrir(); } }
  • 27.
  • 28.
  • 29. Exemplo do uso de throw public Object pop() throws EmptyStackException { Object obj; if (size == 0) throw new EmptyStackException(); obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; }
  • 30.
  • 31.
  • 32. Um exemplo do uso de finally public void exemploBobo() { PrintWriter saida = null; try { System.out.println(&quot;Entrando no bloco try&quot;); saida = new PrintWriter(new FileWriter(&quot;ArqSaida.txt&quot;)); for (int i = 0; i < tamanho; i++) saida.println(&quot;Valor em: &quot; + i + &quot; = &quot; + vetor.elementAt(i)); } catch (ArrayIndexOutOfBoundsException e) { System.err.println(&quot;Capturada ArrayIndexOutOfBoundsException: &quot; +e.getMessage()); } catch (IOException e) { System.err.println(&quot;Capturada IOException: &quot; + e.getMessage()); } finally { if (saida != null) { System.out.println(&quot;Fechando o PrintWriter&quot;); saida.close(); } else { System.out.println(&quot;O PrintWriter não chegou a abrir&quot;); } } }
  • 33. Para encerrar: espiada em algumas classes de exceção (1/4) java.lang.Object | +--java.lang.Throwable | +--java.lang.Exception | +--AclNotFoundException +--ActivationException, +--AlreadyBoundException, +--ApplicationException, +--AWTException, +--BadLocationException, +--ClassNotFoundException, +--CloneNotSupportedException, +--DataFormatException, +--ExpandVetoException, +--GeneralSecurityException, +--IllegalAccessException, +--InstantiationException, +--InterruptedException,
  • 34. Para encerrar: espiada em algumas classes de exceção (2/4) +--IntrospectionException, +--InvocationTargetException, +--IOException | | | +--ChangedCharSetException, | +--CharConversionException, | +--EOFException, | +--FileNotFoundException, | +--InterruptedIOException, | +--MalformedURLException, | +--ObjectStreamException, | +--ProtocolException, | +--RemoteException, | +--SocketException, | +--SyncFailedException, | +--UnknownHostException, | +--UnknownServiceException, | +--UnsupportedEncodingException, | +--UTFDataFormatException, | +--ZipException
  • 35. Para encerrar: espiada em algumas classes de exceção (3/4) +--LastOwnerException, +--NoninvertibleTransformException, +--NoSuchFieldException, +--NoSuchMethodException, +--NotBoundException, +--NotOwnerException, +--ParseException, +--PrinterException, +--PrivilegedActionException, +--PropertyVetoException, +--RemarshalException, +--RuntimeException, | | | +--ArithmeticException, | +--ArrayStoreException, | +--CannotRedoException, | +--CannotUndoException, | +--ClassCastException, | +--CMMException,
  • 36. Para encerrar: espiada em algumas classes de exceção (4/4) | +--ConcurrentModificationException, | +--EmptyStackException, | +--IllegalArgumentException, | +--IllegalMonitorStateException, | +--IllegalPathStateException, | +--IllegalStateException, | +--ImagingOpException, | +--IndexOutOfBoundsException, | +--MissingResourceException, | +--NegativeArraySizeException, | +--NoSuchElementException, | +--NullPointerException, | +--ProfileDataException, | +--ProviderException, | +--RasterFormatException, | +--SecurityException, | +--SystemException, | +--UnsupportedOperationException +--ServerNotActiveException, +--SQLException, +--TooManyListenersException, +--UnsupportedFlavorException, +--UnsupportedLookAndFeelException,