SlideShare uma empresa Scribd logo
Excepções


   Algoritmos e Tipos Abstractos de
   Informação (ATAI)
O que é uma excepção
Uma excepção é um evento que ocorre durante a execução de um
programa que interfere no fluxo normal das instruções deste
programa.

Em Java, a ocorrência de erros durante a execução de um
programa não significa necessariamente que o programa termina.

A linguagem possui um mecanismo para indicar partes críticas num
programa e recuperar eventuais erros ocorridas nestas partes, sem
parar a execução do programa. Este mecanismo é designado por
Excepção (Exception).

Uma Excepção é um sinal gerado pela máquina virtual de Java em
tempo de execução do programa, que é comunicado ao programa
indicando a ocorrência de um erro recuperável.


                                                 2
Erro e Excepção em Java




                   Unchecked

                               3
Excepções Verificadas



                excepções que são
                  verificadas pelo
                     compilador
               derivam de Exception




                                      4
Excepções não Verificadas




                   excepções que não são verificadas pelo
                 compilador derivam de RunTimeException




                                       5
Erro e Excepção em Java
              Erro                                     Excepção

   Um Erro (Error) em Java                 Uma Excepção (Exception)
    corresponde a uma situação               corresponde a uma situação para a
    para a qual nenhuma                      qual a recuperação é possível.
    recuperação é já possível.
                                            È um sinal gerado (lançado) pela
   Descreve erros internos e a              máquina virtual de Java em tempo
    exaustão de recursos durante a           de execução do programa, indicando
    execução do programa.                    a ocorrência de um erro recuperável.

   Pouco se pode fazer se um erro          A captura e o tratamento de
    interno desses ocorrer, além de          Excepções contribui para a
    notificar o utilizador e tentar          proclamada robustez do código dos
    finalizar o programa                     programas Java, a par da tipificação
    adequadamente.                           dos dados e o modelo de memória
                                             sem apontadores.
   Essas situações são bastante
    raras.


                                      ATAI                                          6
O que ocasiona uma Excepção

   Muitos tipos de erros podem provocar uma excepção, como
    por exemplo:

       Tentar aceder a uma tabela fora de seus limites,
       Tentar abrir um arquivo inexistente,
       Tentar ler um ficheiro para além do fim deste,
       Tentar abrir uma URL inexistente,
       Tentar dividir por zero,
       Tentar calcular a raiz quadrada de um número negativo.




                                                 7
Beneficios do uso de Excepções
   O uso de excepções não diminui o esforço necessário para se
    detectar, reportar e manipular erros.

   O uso de excepções permite a separação do código fonte regular do
    código responsável pelo tratamento das situações anómalas que
    podem acontecer no programa.

   Relativamente ao uso da instrução if possui as seguintes vantagens:
       Separação entre o tratamento de erros e o algoritmo.
       Propagação dos erros através da pilha de execução dos
        métodos.
       Divisão por grupos de erros organizados em hierarquia.




                                                        8
Lançamento de Excepção
   Quando ocorre um erro recuperável dentro de um método, este cria um
    objecto da classe Exception e passa este objecto para o sistema de
    execução do Java (runtime) - lança uma Excepção.

   Este objecto contém informações sobre a excepção (seu tipo e o estado do
    programa quando o erro ocorreu).

   A partir deste momento, o sistema de execução do Java responsabiliza-se
    por encontrar o código que trate o erro ocorrido.

   O sistema passa a procurar o código capaz de tratar a excepção.

   A lista de “candidatos” para este tratamento vem da pilha de chamadas de
    métodos que antecederam o método que lançou a excepção.

   O sistema de execução do Java “percorre a pilha de chamadas, e começa
    com o próprio método onde ocorreu o erro, na busca de um método que
    possua um gestor de Excepção (catch) adequado.

                                                          9
Captura de Excepção
   Se a excepção não for tratada e chegar à função main, o programa será
    interrompido com uma mensagem de erro.

   Um “gestor de excepção” é considerado adequado quando a excepção que
    ele manipula é do mesmo tipo da excepção lançada.

   Quando ele é encontrado, recebe o controle do programa para que possa
    tratar o erro ocorrido.

   Em outras palavras, diz-se que ele “capturou” a excepção (catch the
    exception).

   Se nenhum dos métodos pesquisados pelo sistema de execução possui
    um gestor de excepções adequado, então o programa Java em questão é
    abruptamente encerrado.




                                                           10
Tratamento de Excepções
A linguagem Java permite a descrição de situações de excepção de uma forma
normalizada através da utilização de 5 palavras chave correspondentes a
cláusulas especiais, a saber:

    try             try
                    {
    catch            // Trecho crítico do programa
    finally         }
                    catch(Excepção1 e1)
    throw           {
    throws           // Tratamento da e1 do tipo Excepção1
                    }
                    catch(Excepção2 e2)
                    {
                     // Tratamento da e2 do tipo Excepção2
                    }
                      …..
                    finally
                    {
                     // o bloco opcional
                     // se existe executado sempre
                    }




                                                         11
Tratamento de Excepções
Cláusulas try – catch
  try

  O código do programa tal como seria escrito mesmo que garantidamente
  não pudesse gerar qualquer erro, é colocado neste bloco.

  Num bloco try passaremos a ter a possibilidade de detectar a ocorrência
  de alguns possíveis erros no código.

  catch(Identificador_da_excepção var_exc1)

  É aqui escrito o código de tratamento da excepção identificada na cláusula
  catch.

   var_exc1 é instância da excepção que foi gerada (e que pode ser
  usada).

  Podemos ter inúmeras cláusulas catch para o mesmo bloco try, cada
  uma correspondendo a uma classe de excepção diferente.

                                                             12
Tratamento de Excepções
Cláusula finally
 finally
  O código aqui colocado será sempre executado caso surja ou não uma excepção em
  try.

  Este código pode fazer o fecho de ficheiros, libertar recursos alocados, ou manipular
  variáveis.

  Se foi detectada excepção em try
      se existe uma cláusula catch local ao método, então o bloco catch é
      executado, e só depois o bloco finally.
      se não existe catch local para a excepção ocorrida, é executado o bloco finally
      e, caso exista, a cláusula catch externa ao método que primeiro for encontrada
      (por exemplo no método invocador).

  Se a forma de saída do bloco try, for return, continue ou break, quer exista ou não
  catch, o bloco finally é de imediato executado.


                                                                13
Lançamento explícito de Excepções
(throw e throws)

Torna-se por vezes necessário no código de um dado método, "lançar" explicitamente uma
excepção, ou seja, alertar explicitamente para uma situação de erro entretanto ocorrida na
execução de tal código.


Qualquer método tem a possibilidade de o fazer usando a cláusula throw e criando uma
instância de uma dada excepção usando new.

A linguagem Java requer que qualquer método que possa provocar a ocorrência de uma
excepção normal, faça:
      Localmente o tratamento de tal excepção numa cláusula catch.
     Declare explicitamente que pode lançar tal excepção embora não a trate
     localmente.
     Neste último caso, no cabeçalho do método devem ser explicitamente declaradas
     todas as excepções que podem ser lançadas através de uma cláusula throws.


                                                                  14
Exemplo1
                                 (sem tratamento de Excepção)
                                                                  Programa que lê dois inteiros
class Ex1{
                                                    e calcula a sua divisão
public static int divide(int a, int b)
{
  return a/b;
}
public static void main(String[] args) {
         int num1, num2;
         System.out.println("Introduza o primeiro número");
         num1=Le.umInt();
         System.out.println("Introduza o segundo número");
         num2=Le.umInt();

        System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2));
    }
}
               Quando num2 é igual a 0, causa o seguinte erro:
                java.lang.ArithmeticException: / by zero
                                                  at Ex1.divide(exemplo1.java:5)
                                                  at Ex1.main(exemplo1.java:15)

               o programa termina abruptamente


                                                                           15
Exemplo2
                      (com tratamento de Excepção no main)
class Ex2{
public static int divide(int a, int b)
{
  return a/b;
                                                            Programa que lê dois inteiros
}                                                           e calcula a sua divisão
public static void main(String[] args) {
          int num1, num2;
          System.out.println("Introduza o primeiro número");
          num1=Le.umInt();
          System.out.println("Introduza o segundo número");
          num2=Le.umInt();
    try
    {
          System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2));
    }
    catch (ArithmeticException e)
    {
          System.out.println("Não é possivel divisao por 0 ");
    }
                                                  Quando num2 é igual a 0, aparece a seguinte
}}                                                    mensagem:

                                                     Não é possivel divisao por 0
 Excepção é capturada no main                       Finished executing

                                                    Quando é executado o programa não termina, é mais
                                                        robusto !




                                                                        16
Exemplo3
                        (com captura de Excepção no divide)
class Ex3{
public static int divide(int a, int b)
{
  try{
                                                            Programa que lê dois inteiros
  return a/b;                                               e calcula a sua divisão
  }
  catch (ArithmeticException e)
    {
          System.out.println("Não é possivel divisao por 0 ");
          return -1; // não é boa solução
    }
}
public static void main(String[] args) {
          int num1, num2;
          System.out.println("Introduza o primeiro número");
          num1=Le.umInt();
          System.out.println("Introduza o segundo número");
          num2=Le.umInt();
          int res = divide(num1,num2);
          if (res!=-1)System.out.println(num1+ " / " + num2 + " = "+ res);

}                                                Quando num2 é igual a 0, aparece a seguinte
}                                                    mensagem:

    Excepção é capturada no divide                Não é possivel divisao por 0
                                                 Finished executing




                                                                      17
Exemplo4
     (com captura e lançamento de Excepção no divide e tratamento no
class Ex4{
                                 main)
public static int divide(int a, int b) throws ArithmeticException
{
  try{                                                       Não é obrigatório para
           return a/b;                                       RunTimeException
  }
  catch (ArithmeticException e){
           System.out.print("Erro: ");
           throw e;
     }
}
public static void main(String[] args) {
           int num1, num2;
           System.out.println("Introduza o primeiro número");
           num1=Le.umInt();
           System.out.println("Introduza o segundo número");
           num2=Le.umInt();
    try {
           System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2));
     }
     catch (ArithmeticException e)
     {
           System.out.println("Não é possivel " + e.getMessage());
     }
                                          Quando num2 é igual a 0, aparece a seguinte
}                                             mensagem:
}
                                          Erro: Não é possivel / by zero
Excepção é capturada no divide            Finished executing
                                                                           18
Exemplo5
       (com lançamento de Excepção no divide e tratamento no main)

class Ex4{
public static int divide(int a, int b)
{
  if (b==0) throw new ArithmeticException("Valor nulo!");
  return a/b;
}
public static void main(String[] args) {
          int num1, num2;
          System.out.println("Introduza o primeiro número");
          num1=Le.umInt();
          System.out.println("Introduza o segundo número");
          num2=Le.umInt();
    try {
          System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2));
    }
    catch (ArithmeticException e)
    {
          System.out.println("Não é possivel " + e.getMessage());
    }
                                         Quando num2 é igual a 0, aparece a seguinte
}}                                           mensagem:

Excepção é capturada no divide           Não é possivel Valor nulo!
                                         Finished executing



                                                                        19
Exemplo
class Exemplo{
 public static void main (String[] args){
   String codigo; char zona;
   int distrito, valido = 0;
   System.out.print ("Codigo do Produto (XXX para sair): ");
   codigo = Le.umaString();
   while (!codigo.equals ("XXX")) {
   try {
      zona = codigo.charAt(2);
      distrito = Integer.parseInt(codigo.substring(3,5));
      System.out.println ("Distrito " +distrito);
      valido++;
    }
   catch (StringIndexOutOfBoundsException exception) {
      System.out.println ("comprimento errado: " + codigo);
       }
   catch (NumberFormatException exception) {
      System.out.println ("Distrito não é numérico: " + codigo);
       }
   System.out.print (" Codigo do Produto (XXX para sair): ");
   codigo = Le.umaString();
 }
 System.out.println ("Codigos validos: " + valido);
 }}

                                                           20
Modelo das Excepções
Modelo baseado em três operações:

      Declaração das excepções
          Indicação ao compilador o que pode correr mal durante a execução de um método.
          Consiste na declaração das excepções que podem ocorrer durante a execução de um
           método
          Sintaxe: public voi meuMetodo() throws IOException, ArithmeticException …;

      Lançamento de excepções
          Um método poderá lançar as excepções que declarar
           (excepto: RuntimeException ou Error)
          Lançamento explicito
            Sintaxe1: throw new TheException ou
            Sintaxe2: TheException e = new TheException (); throw e;
          Lançamento Implícito

      Captura de excepções
          ponto do código para o qual o controlo do programa é transferido quando a excepção
           é lançada (try, catch, finally).


                                             ATAI                                          21
Classificação das Excepções

RuntimeException                   IOException

 Ocorre porque houve um erro de •Tentar ler além do final de um
  programação.                   arquivo
 Conversão explícita de tipo
                                   •Tentar abrir um URL incorrecto
  (cast)

 Acesso a elemento de uma         •Tentar encontrar um objecto
  tabela além dos limites .        Class através de uma string que
                                   não denota uma classe existente.
 Acesso de ponteiro nulo




                                                  22
Classes de Excepção em Java
                                                                          java.util
    java.lang                                 EmptyStackException


                                               NoSuchElementException
                 ClassNotFoundException

                                               ArithmeticException
                 CloneNotSupportedException
   Object
                                               ArrayStoreException
                IllegalAccessException
  Throwable
                                               ClassCastException
                InstantiationException
  Exception
                                               IllegalArgumentException
                InterruptedException

                                               IllegalMonitorStateException
                 NoSuchMethodException

                                              IndexOutOfBoundsException
                 RunTimeException

                                               NegativeArraySizeException
   java.awt
                 AWTException
                                              NullPointerException

   java.io        IOException
                                              SecurityException




                                                                                      23
Excepções mais comuns
ArithmeticException                               ArrayStoreException
Indica situações de erros em processamento         Indica tentativa de armazenamento de um objecto
aritmético, tal como uma divisão inteira por 0.    não válido numa tabela
ArrayIndexOutOfBoundsException                    IndexOutOfBoundsException
indica a tentativa de acesso a um elemento de um    Indica tentativa de usar um índice fora dos limite de
arranjo fora de seus limites -- ou o índice era    uma tabela
negativo ou era maior ou igual ao tamanho do
                                                   NegativeArraySizeException
arranjo.
                                                    Indica tentativa de criar uma tabela com dimensão
NullPointerException                              negativa
indica que a aplicação tentou usar null onde uma
                                                   NumberFormatException
referência a um objeto era necessária
                                                   indica que tentou-se a conversão de uma string para
IOException                                       um formato numérico, mas seu conteúdo não
indica a ocorrência de algum tipo de erro em       representava adequadamente um número para
operações de entrada e saída                       aquele formato.
NumberFormatException                             StringIndexOutOfBoundsException
indica que tentou-se a conversão de uma string     Indica tentativa de usar um índice numa string fora
para um formato numérico, mas seu conteúdo não     dos limite destas
representava adequadamente um número para
aquele formato.




                                                                             24
Declaração explicita de Excepções
                 Exemplo6 - uso de throws

class LePalavras {

public static void copiaPalavra(String [] tabPal, String palavra)
 throws ArrayIndexOutOfBoundsException,
        NumberFormatException {
 int index;
 System.out.print("Introduza um Indice :");
 index = Integer.valueOf(Le.umaString().trim()).intValue();
 tabPal[index]= palavra;
 }




                                          Este programa faz a leitura de uma sequência de
                                          Palavras e armazenamento de cada uma na posição
                                          de uma tabela cujo índice é introduzido pelo
                                          utilizador (sem validação prévia).




                                                             25
Declaração explicita de Excepções
                 Exemplo6 - uso de throws
 public static void main(String args[])
  {
    int index, cont=0;
    final int MAX_PALAVRAS=5;
    String palavra = "" ;
    String[] tabPal = new String[MAX_PALAVRAS];   // Tabela de Palavras
     do{
        try {
             System.out.print("nIntroduza uma Palavra :");
             palavra = Le.umaString();
             copiaPalavra(tabPal, palavra);
        }
        catch (ArrayIndexOutOfBoundsException e){
            System.out.println("Erro! indice ilegal");
        }
        catch (NumberFormatException e) {
           System.out.println("Erro! é esperado um inteiro");
        }
        cont++;
        }
        while (cont<MAX_PALAVRAS);
        System.out.println("Fim..");
  }
}                                                         26
Lançamento de Excepções por um método
          Exemplo7 - uso de throw

class LetabInteiros{

 static public int [] criaTabInt(int tamanho)
 {
   int [] tabInt = new int[tamanho];
   for (int i = 0 ; i < tamanho; i++)
   {
     System.out.print("n Introduza " + i +" valor" );
     tabInt[i] = Le.umInt();
   }
   return tabInt;
}

                                criaTabInt
                                   Cria uma tabela de inteiros dinamicamente.
                                   Lê do teclado um conjunto de valores inteiros.
                                   Coloca cada valor lido na tabela.



                                                           27
Lançamento de Excepções por um método
        Exemplo7 - uso de throw (cont.)

public static int elementoEm (int [] s, int index)
  throws ArrayIndexOutOfBoundsException
{
  if (index < s.length && index > -1)
     return s[index];
  else
  {
   ArrayIndexOutOfBoundsException excepcao =
   new ArrayIndexOutOfBoundsException("erro no método elementoEm..");

  throw excepcao;
 }                       Independente de outras excepções que possam ocorrer na
                          execução, uma classe pode forçar o lançamento de excepções
}                         ou relançar uma determinada excepção, para que possa ser
                          tratada em diferentes níveis.
                         No método elementoEm o lançamento da excepção é explícita
                          (ou programada) através do uso da instrução throw.




                                                               28
Lançamento de Excepções por um método
              Exemplo7 - uso de throw (cont.)
    public static void main(String args[]){
     int [] tab;
     int index, valor, tabMax;
     boolean fim = false;

     System.out.print("n Introduza o tamanho da tabela:");
     tabMax = Le.umInt();
     tab = criaTabInt(tabMax);
     do{
       System.out.print("n Introduza o indice:");
       index = Le.umInt();
       try {
             valor = elementoEm(tab,index);
             System.out.print("Valor na posicao: " +valor);
        }
       catch (ArrayIndexOutOfBoundsException e){
              if ( index == -1)
                 fim = true;                         Este programa lê um conjunto de inteiros para
              else                                    uma tabela, em seguida retorna os valores lidos
                 System.out.println(e);
       }                                              pela indicação do índice da tabela.
     }                                               O programa termina quando o índice é
     while (!fim);
     System.out.println("Fim..");                     negativo.
    }
}
                                                                          29
Lançamento de Excepções por um método
         Exemplo8 - uso de throw (cont.)

public static int elementoEm(int [] s, int index)
 throws ArrayIndexOutOfBoundsException { // retorna valor na posicao index

  try
  {                                                    Alteração do método elementoEm
      return s[index];
  }
  catch( ArrayIndexOutOfBoundsException e) // trata localmente a excepção.
  {
    if ( index >= s.length)
    {
     System.out.println("nErro, indice ilegal. uso de indice 0");
     index = 0;
     return s[index];
    }                         Nesta variante do método elementoEm a excepção é capturada.
    else
                              É feito o tratamento do caso de tentativa do uso de um índice superior a
     throw e;
                                     dimensão da tabela.
  } // fim catch                    Nesta situação o índice é posto a 0.
                                    Para que seja possível o tratamento de índices negativos, no método main,
}// fim método                       a excepção é novamente lançada, através do uso de throw.




                                                                                   30
Beneficios do uso de Excepções
 O uso de excepções não diminui o esforço necessário para
 detectar, reportar e manipular erros.

 O uso de excepções permite a separação do código fonte regular
 do código responsável pelo tratamento das situações anómalos
 que podem acontecer no programa.

 Relativamente ao uso da instrução if possui as seguintes
 vantagens:
  Separação entre o tratamento de erros e o algoritmo.
  Propagação dos erros através da pilha de execução dos métodos.
  Divisão por grupos de erros organizados em hierarquia.




                                                     31

Mais conteúdo relacionado

Mais procurados

Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
FranciscoMacopa
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
Maurício Linhares
 
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
Adriano Teixeira de Souza
 
Excecoes
ExcecoesExcecoes
Excecoes
EMSNEWS
 
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
 
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
Manuel Menezes de Sequeira
 
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
 
Manual robotec
Manual robotecManual robotec
Manual robotec
Magno Ritzmann
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1
Cícero Quarto
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
Marques Amaro
 
Exceptions
ExceptionsExceptions
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
samuelthiago
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
thiagodp
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
thiagodp
 
Java5
Java5Java5
Aula 1 2
Aula 1 2Aula 1 2
Aula 1 2
Aparicio Junior
 
Ferramentas testes2003
Ferramentas testes2003Ferramentas testes2003
Ferramentas testes2003
Natalio Rodrigues
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
Regis Magalhães
 
Aula java[1]
Aula java[1]Aula java[1]

Mais procurados (19)

Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
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
 
Excecoes
ExcecoesExcecoes
Excecoes
 
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 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
 
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
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
 
Exceptions
ExceptionsExceptions
Exceptions
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
Java5
Java5Java5
Java5
 
Aula 1 2
Aula 1 2Aula 1 2
Aula 1 2
 
Ferramentas testes2003
Ferramentas testes2003Ferramentas testes2003
Ferramentas testes2003
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Aula java[1]
Aula java[1]Aula java[1]
Aula java[1]
 

Semelhante a Excepções JAVA

Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
Leonardo Freitas
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
Verônica Veiga
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
Denis L Presciliano
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
Elaine Cecília Gatto
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
Fabio Moura Pereira
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
Alvaro Oliveira
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
Glaucio Scheibel
 
Java3
Java3Java3
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
Secretaria de Educação de Goiás
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
FAFICA
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
Fabio Moura Pereira
 
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
Fabio Moura Pereira
 
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
 
Java Básico :: Exceções
Java Básico :: ExceçõesJava Básico :: Exceções
Java Básico :: Exceções
Wesley R. Bezerra
 
Como manipular exceções em java
Como manipular exceções em javaComo manipular exceções em java
Como manipular exceções em java
daliarafaela
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
Higor Klecyus
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
Arthur Emanuel
 
Java1
Java1Java1
[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
Loiane Groner
 
Semana dois
Semana doisSemana dois
Semana dois
Pedro Hübner
 

Semelhante a Excepções JAVA (20)

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
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
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
 
Java3
Java3Java3
Java3
 
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
 
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
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Java Básico :: Exceções
Java Básico :: ExceçõesJava Básico :: Exceções
Java Básico :: Exceções
 
Como manipular exceções em java
Como manipular exceções em javaComo manipular exceções em java
Como manipular exceções em java
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Java1
Java1Java1
Java1
 
[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
 
Semana dois
Semana doisSemana dois
Semana dois
 

Mais de Pedro De Almeida

APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
Pedro De Almeida
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
Pedro De Almeida
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
Pedro De Almeida
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
Pedro De Almeida
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
Pedro De Almeida
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
Pedro De Almeida
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
Pedro De Almeida
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
Pedro De Almeida
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
Pedro De Almeida
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
Pedro De Almeida
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Pedro De Almeida
 
Sessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-ZivSessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-Ziv
Pedro De Almeida
 
Sessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritméticaSessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritmética
Pedro De Almeida
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
Pedro De Almeida
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
Pedro De Almeida
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
Pedro De Almeida
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
Pedro De Almeida
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
Pedro De Almeida
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
Pedro De Almeida
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
Pedro De Almeida
 

Mais de Pedro De Almeida (20)

APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
 
Sessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-ZivSessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-Ziv
 
Sessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritméticaSessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritmética
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
 

Último

AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptxAVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AntonioVieira539017
 
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
MarcosPaulo777883
 
Aula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptxAula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptx
LILIANPRESTESSCUDELE
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
DECIOMAURINARAMOS
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
AntnioManuelAgdoma
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
cmeioctaciliabetesch
 
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxSlides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
MateusTavares54
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
MessiasMarianoG
 
atividade 8º ano entrevista - com tirinha
atividade 8º ano entrevista - com tirinhaatividade 8º ano entrevista - com tirinha
atividade 8º ano entrevista - com tirinha
Suzy De Abreu Santana
 
Pintura Romana .pptx
Pintura Romana                     .pptxPintura Romana                     .pptx
Pintura Romana .pptx
TomasSousa7
 
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdfCRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
soaresdesouzaamanda8
 
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptxAula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
edivirgesribeiro1
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
fernandacosta37763
 
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
SILVIAREGINANAZARECA
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
wagnermorais28
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
Manuais Formação
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
YeniferGarcia36
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
LucianaCristina58
 

Último (20)

AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptxAVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
 
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
 
Aula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptxAula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptx
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
 
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxSlides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
 
atividade 8º ano entrevista - com tirinha
atividade 8º ano entrevista - com tirinhaatividade 8º ano entrevista - com tirinha
atividade 8º ano entrevista - com tirinha
 
Pintura Romana .pptx
Pintura Romana                     .pptxPintura Romana                     .pptx
Pintura Romana .pptx
 
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdfCRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
 
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptxAula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
 
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
 

Excepções JAVA

  • 1. Excepções Algoritmos e Tipos Abstractos de Informação (ATAI)
  • 2. O que é uma excepção Uma excepção é um evento que ocorre durante a execução de um programa que interfere no fluxo normal das instruções deste programa. Em Java, a ocorrência de erros durante a execução de um programa não significa necessariamente que o programa termina. A linguagem possui um mecanismo para indicar partes críticas num programa e recuperar eventuais erros ocorridas nestas partes, sem parar a execução do programa. Este mecanismo é designado por Excepção (Exception). Uma Excepção é um sinal gerado pela máquina virtual de Java em tempo de execução do programa, que é comunicado ao programa indicando a ocorrência de um erro recuperável. 2
  • 3. Erro e Excepção em Java Unchecked 3
  • 4. Excepções Verificadas excepções que são verificadas pelo compilador derivam de Exception 4
  • 5. Excepções não Verificadas excepções que não são verificadas pelo compilador derivam de RunTimeException 5
  • 6. Erro e Excepção em Java Erro Excepção  Um Erro (Error) em Java  Uma Excepção (Exception) corresponde a uma situação corresponde a uma situação para a para a qual nenhuma qual a recuperação é possível. recuperação é já possível.  È um sinal gerado (lançado) pela  Descreve erros internos e a máquina virtual de Java em tempo exaustão de recursos durante a de execução do programa, indicando execução do programa. a ocorrência de um erro recuperável.  Pouco se pode fazer se um erro  A captura e o tratamento de interno desses ocorrer, além de Excepções contribui para a notificar o utilizador e tentar proclamada robustez do código dos finalizar o programa programas Java, a par da tipificação adequadamente. dos dados e o modelo de memória sem apontadores.  Essas situações são bastante raras. ATAI 6
  • 7. O que ocasiona uma Excepção  Muitos tipos de erros podem provocar uma excepção, como por exemplo:  Tentar aceder a uma tabela fora de seus limites,  Tentar abrir um arquivo inexistente,  Tentar ler um ficheiro para além do fim deste,  Tentar abrir uma URL inexistente,  Tentar dividir por zero,  Tentar calcular a raiz quadrada de um número negativo. 7
  • 8. Beneficios do uso de Excepções  O uso de excepções não diminui o esforço necessário para se detectar, reportar e manipular erros.  O uso de excepções permite a separação do código fonte regular do código responsável pelo tratamento das situações anómalas que podem acontecer no programa.  Relativamente ao uso da instrução if possui as seguintes vantagens:  Separação entre o tratamento de erros e o algoritmo.  Propagação dos erros através da pilha de execução dos métodos.  Divisão por grupos de erros organizados em hierarquia. 8
  • 9. Lançamento de Excepção  Quando ocorre um erro recuperável dentro de um método, este cria um objecto da classe Exception e passa este objecto para o sistema de execução do Java (runtime) - lança uma Excepção.  Este objecto contém informações sobre a excepção (seu tipo e o estado do programa quando o erro ocorreu).  A partir deste momento, o sistema de execução do Java responsabiliza-se por encontrar o código que trate o erro ocorrido.  O sistema passa a procurar o código capaz de tratar a excepção.  A lista de “candidatos” para este tratamento vem da pilha de chamadas de métodos que antecederam o método que lançou a excepção.  O sistema de execução do Java “percorre a pilha de chamadas, e começa com o próprio método onde ocorreu o erro, na busca de um método que possua um gestor de Excepção (catch) adequado. 9
  • 10. Captura de Excepção  Se a excepção não for tratada e chegar à função main, o programa será interrompido com uma mensagem de erro.  Um “gestor de excepção” é considerado adequado quando a excepção que ele manipula é do mesmo tipo da excepção lançada.  Quando ele é encontrado, recebe o controle do programa para que possa tratar o erro ocorrido.  Em outras palavras, diz-se que ele “capturou” a excepção (catch the exception).  Se nenhum dos métodos pesquisados pelo sistema de execução possui um gestor de excepções adequado, então o programa Java em questão é abruptamente encerrado. 10
  • 11. Tratamento de Excepções A linguagem Java permite a descrição de situações de excepção de uma forma normalizada através da utilização de 5 palavras chave correspondentes a cláusulas especiais, a saber: try try { catch // Trecho crítico do programa finally } catch(Excepção1 e1) throw { throws // Tratamento da e1 do tipo Excepção1 } catch(Excepção2 e2) { // Tratamento da e2 do tipo Excepção2 } ….. finally { // o bloco opcional // se existe executado sempre } 11
  • 12. Tratamento de Excepções Cláusulas try – catch try O código do programa tal como seria escrito mesmo que garantidamente não pudesse gerar qualquer erro, é colocado neste bloco. Num bloco try passaremos a ter a possibilidade de detectar a ocorrência de alguns possíveis erros no código. catch(Identificador_da_excepção var_exc1) É aqui escrito o código de tratamento da excepção identificada na cláusula catch.  var_exc1 é instância da excepção que foi gerada (e que pode ser usada). Podemos ter inúmeras cláusulas catch para o mesmo bloco try, cada uma correspondendo a uma classe de excepção diferente. 12
  • 13. Tratamento de Excepções Cláusula finally finally O código aqui colocado será sempre executado caso surja ou não uma excepção em try. Este código pode fazer o fecho de ficheiros, libertar recursos alocados, ou manipular variáveis. Se foi detectada excepção em try se existe uma cláusula catch local ao método, então o bloco catch é executado, e só depois o bloco finally. se não existe catch local para a excepção ocorrida, é executado o bloco finally e, caso exista, a cláusula catch externa ao método que primeiro for encontrada (por exemplo no método invocador). Se a forma de saída do bloco try, for return, continue ou break, quer exista ou não catch, o bloco finally é de imediato executado. 13
  • 14. Lançamento explícito de Excepções (throw e throws) Torna-se por vezes necessário no código de um dado método, "lançar" explicitamente uma excepção, ou seja, alertar explicitamente para uma situação de erro entretanto ocorrida na execução de tal código. Qualquer método tem a possibilidade de o fazer usando a cláusula throw e criando uma instância de uma dada excepção usando new. A linguagem Java requer que qualquer método que possa provocar a ocorrência de uma excepção normal, faça: Localmente o tratamento de tal excepção numa cláusula catch. Declare explicitamente que pode lançar tal excepção embora não a trate localmente. Neste último caso, no cabeçalho do método devem ser explicitamente declaradas todas as excepções que podem ser lançadas através de uma cláusula throws. 14
  • 15. Exemplo1 (sem tratamento de Excepção) Programa que lê dois inteiros class Ex1{ e calcula a sua divisão public static int divide(int a, int b) { return a/b; } public static void main(String[] args) { int num1, num2; System.out.println("Introduza o primeiro número"); num1=Le.umInt(); System.out.println("Introduza o segundo número"); num2=Le.umInt(); System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2)); } } Quando num2 é igual a 0, causa o seguinte erro: java.lang.ArithmeticException: / by zero at Ex1.divide(exemplo1.java:5) at Ex1.main(exemplo1.java:15) o programa termina abruptamente 15
  • 16. Exemplo2 (com tratamento de Excepção no main) class Ex2{ public static int divide(int a, int b) { return a/b; Programa que lê dois inteiros } e calcula a sua divisão public static void main(String[] args) { int num1, num2; System.out.println("Introduza o primeiro número"); num1=Le.umInt(); System.out.println("Introduza o segundo número"); num2=Le.umInt(); try { System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2)); } catch (ArithmeticException e) { System.out.println("Não é possivel divisao por 0 "); } Quando num2 é igual a 0, aparece a seguinte }} mensagem: Não é possivel divisao por 0 Excepção é capturada no main Finished executing Quando é executado o programa não termina, é mais robusto ! 16
  • 17. Exemplo3 (com captura de Excepção no divide) class Ex3{ public static int divide(int a, int b) { try{ Programa que lê dois inteiros return a/b; e calcula a sua divisão } catch (ArithmeticException e) { System.out.println("Não é possivel divisao por 0 "); return -1; // não é boa solução } } public static void main(String[] args) { int num1, num2; System.out.println("Introduza o primeiro número"); num1=Le.umInt(); System.out.println("Introduza o segundo número"); num2=Le.umInt(); int res = divide(num1,num2); if (res!=-1)System.out.println(num1+ " / " + num2 + " = "+ res); } Quando num2 é igual a 0, aparece a seguinte } mensagem: Excepção é capturada no divide Não é possivel divisao por 0 Finished executing 17
  • 18. Exemplo4 (com captura e lançamento de Excepção no divide e tratamento no class Ex4{ main) public static int divide(int a, int b) throws ArithmeticException { try{ Não é obrigatório para return a/b; RunTimeException } catch (ArithmeticException e){ System.out.print("Erro: "); throw e; } } public static void main(String[] args) { int num1, num2; System.out.println("Introduza o primeiro número"); num1=Le.umInt(); System.out.println("Introduza o segundo número"); num2=Le.umInt(); try { System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2)); } catch (ArithmeticException e) { System.out.println("Não é possivel " + e.getMessage()); } Quando num2 é igual a 0, aparece a seguinte } mensagem: } Erro: Não é possivel / by zero Excepção é capturada no divide Finished executing 18
  • 19. Exemplo5 (com lançamento de Excepção no divide e tratamento no main) class Ex4{ public static int divide(int a, int b) { if (b==0) throw new ArithmeticException("Valor nulo!"); return a/b; } public static void main(String[] args) { int num1, num2; System.out.println("Introduza o primeiro número"); num1=Le.umInt(); System.out.println("Introduza o segundo número"); num2=Le.umInt(); try { System.out.println(num1+ " / " + num2 + " = "+ divide(num1,num2)); } catch (ArithmeticException e) { System.out.println("Não é possivel " + e.getMessage()); } Quando num2 é igual a 0, aparece a seguinte }} mensagem: Excepção é capturada no divide Não é possivel Valor nulo! Finished executing 19
  • 20. Exemplo class Exemplo{ public static void main (String[] args){ String codigo; char zona; int distrito, valido = 0; System.out.print ("Codigo do Produto (XXX para sair): "); codigo = Le.umaString(); while (!codigo.equals ("XXX")) { try { zona = codigo.charAt(2); distrito = Integer.parseInt(codigo.substring(3,5)); System.out.println ("Distrito " +distrito); valido++; } catch (StringIndexOutOfBoundsException exception) { System.out.println ("comprimento errado: " + codigo); } catch (NumberFormatException exception) { System.out.println ("Distrito não é numérico: " + codigo); } System.out.print (" Codigo do Produto (XXX para sair): "); codigo = Le.umaString(); } System.out.println ("Codigos validos: " + valido); }} 20
  • 21. Modelo das Excepções Modelo baseado em três operações:  Declaração das excepções  Indicação ao compilador o que pode correr mal durante a execução de um método.  Consiste na declaração das excepções que podem ocorrer durante a execução de um método  Sintaxe: public voi meuMetodo() throws IOException, ArithmeticException …;  Lançamento de excepções  Um método poderá lançar as excepções que declarar (excepto: RuntimeException ou Error)  Lançamento explicito  Sintaxe1: throw new TheException ou  Sintaxe2: TheException e = new TheException (); throw e;  Lançamento Implícito  Captura de excepções  ponto do código para o qual o controlo do programa é transferido quando a excepção é lançada (try, catch, finally). ATAI 21
  • 22. Classificação das Excepções RuntimeException IOException  Ocorre porque houve um erro de •Tentar ler além do final de um programação. arquivo  Conversão explícita de tipo •Tentar abrir um URL incorrecto (cast)  Acesso a elemento de uma •Tentar encontrar um objecto tabela além dos limites . Class através de uma string que não denota uma classe existente.  Acesso de ponteiro nulo 22
  • 23. Classes de Excepção em Java java.util java.lang EmptyStackException NoSuchElementException ClassNotFoundException ArithmeticException CloneNotSupportedException Object ArrayStoreException IllegalAccessException Throwable ClassCastException InstantiationException Exception IllegalArgumentException InterruptedException IllegalMonitorStateException NoSuchMethodException IndexOutOfBoundsException RunTimeException NegativeArraySizeException java.awt AWTException NullPointerException java.io IOException SecurityException 23
  • 24. Excepções mais comuns ArithmeticException ArrayStoreException Indica situações de erros em processamento Indica tentativa de armazenamento de um objecto aritmético, tal como uma divisão inteira por 0. não válido numa tabela ArrayIndexOutOfBoundsException IndexOutOfBoundsException indica a tentativa de acesso a um elemento de um Indica tentativa de usar um índice fora dos limite de arranjo fora de seus limites -- ou o índice era uma tabela negativo ou era maior ou igual ao tamanho do NegativeArraySizeException arranjo. Indica tentativa de criar uma tabela com dimensão NullPointerException negativa indica que a aplicação tentou usar null onde uma NumberFormatException referência a um objeto era necessária indica que tentou-se a conversão de uma string para IOException um formato numérico, mas seu conteúdo não indica a ocorrência de algum tipo de erro em representava adequadamente um número para operações de entrada e saída aquele formato. NumberFormatException StringIndexOutOfBoundsException indica que tentou-se a conversão de uma string Indica tentativa de usar um índice numa string fora para um formato numérico, mas seu conteúdo não dos limite destas representava adequadamente um número para aquele formato. 24
  • 25. Declaração explicita de Excepções Exemplo6 - uso de throws class LePalavras { public static void copiaPalavra(String [] tabPal, String palavra) throws ArrayIndexOutOfBoundsException, NumberFormatException { int index; System.out.print("Introduza um Indice :"); index = Integer.valueOf(Le.umaString().trim()).intValue(); tabPal[index]= palavra; } Este programa faz a leitura de uma sequência de Palavras e armazenamento de cada uma na posição de uma tabela cujo índice é introduzido pelo utilizador (sem validação prévia). 25
  • 26. Declaração explicita de Excepções Exemplo6 - uso de throws public static void main(String args[]) { int index, cont=0; final int MAX_PALAVRAS=5; String palavra = "" ; String[] tabPal = new String[MAX_PALAVRAS]; // Tabela de Palavras do{ try { System.out.print("nIntroduza uma Palavra :"); palavra = Le.umaString(); copiaPalavra(tabPal, palavra); } catch (ArrayIndexOutOfBoundsException e){ System.out.println("Erro! indice ilegal"); } catch (NumberFormatException e) { System.out.println("Erro! é esperado um inteiro"); } cont++; } while (cont<MAX_PALAVRAS); System.out.println("Fim.."); } } 26
  • 27. Lançamento de Excepções por um método Exemplo7 - uso de throw class LetabInteiros{ static public int [] criaTabInt(int tamanho) { int [] tabInt = new int[tamanho]; for (int i = 0 ; i < tamanho; i++) { System.out.print("n Introduza " + i +" valor" ); tabInt[i] = Le.umInt(); } return tabInt; } criaTabInt  Cria uma tabela de inteiros dinamicamente.  Lê do teclado um conjunto de valores inteiros.  Coloca cada valor lido na tabela. 27
  • 28. Lançamento de Excepções por um método Exemplo7 - uso de throw (cont.) public static int elementoEm (int [] s, int index) throws ArrayIndexOutOfBoundsException { if (index < s.length && index > -1) return s[index]; else { ArrayIndexOutOfBoundsException excepcao = new ArrayIndexOutOfBoundsException("erro no método elementoEm.."); throw excepcao; }  Independente de outras excepções que possam ocorrer na execução, uma classe pode forçar o lançamento de excepções } ou relançar uma determinada excepção, para que possa ser tratada em diferentes níveis.  No método elementoEm o lançamento da excepção é explícita (ou programada) através do uso da instrução throw. 28
  • 29. Lançamento de Excepções por um método Exemplo7 - uso de throw (cont.) public static void main(String args[]){ int [] tab; int index, valor, tabMax; boolean fim = false; System.out.print("n Introduza o tamanho da tabela:"); tabMax = Le.umInt(); tab = criaTabInt(tabMax); do{ System.out.print("n Introduza o indice:"); index = Le.umInt(); try { valor = elementoEm(tab,index); System.out.print("Valor na posicao: " +valor); } catch (ArrayIndexOutOfBoundsException e){ if ( index == -1) fim = true;  Este programa lê um conjunto de inteiros para else uma tabela, em seguida retorna os valores lidos System.out.println(e); } pela indicação do índice da tabela. }  O programa termina quando o índice é while (!fim); System.out.println("Fim.."); negativo. } } 29
  • 30. Lançamento de Excepções por um método Exemplo8 - uso de throw (cont.) public static int elementoEm(int [] s, int index) throws ArrayIndexOutOfBoundsException { // retorna valor na posicao index try { Alteração do método elementoEm return s[index]; } catch( ArrayIndexOutOfBoundsException e) // trata localmente a excepção. { if ( index >= s.length) { System.out.println("nErro, indice ilegal. uso de indice 0"); index = 0; return s[index]; }  Nesta variante do método elementoEm a excepção é capturada. else  É feito o tratamento do caso de tentativa do uso de um índice superior a throw e; dimensão da tabela. } // fim catch  Nesta situação o índice é posto a 0.  Para que seja possível o tratamento de índices negativos, no método main, }// fim método a excepção é novamente lançada, através do uso de throw. 30
  • 31. Beneficios do uso de Excepções O uso de excepções não diminui o esforço necessário para detectar, reportar e manipular erros. O uso de excepções permite a separação do código fonte regular do código responsável pelo tratamento das situações anómalos que podem acontecer no programa. Relativamente ao uso da instrução if possui as seguintes vantagens: Separação entre o tratamento de erros e o algoritmo. Propagação dos erros através da pilha de execução dos métodos. Divisão por grupos de erros organizados em hierarquia. 31