SóProvas


ID
17779
Banca
CESGRANRIO
Órgão
BNDES
Ano
2008
Provas
Disciplina
Programação
Assuntos

Observe o seguinte programa JAVA:

package p;

public class exemplo {

public exemplo() {

}

public static void main(String[] args) {
try {
      System.out.println(1/0);
      System.out.println("M");
     }
catch (ArithmeticException ex2) { 
       System.out.print("X");
     }
catch (Exception ex3) {
       System.out.print("Y");
     }
finally {
       System.out.print("Z");
      }
System.out.print("F"); 
   }
}

A saída desse programa é

Alternativas
Comentários
  • Essa questão é muito interessante para entender o funcionamento de Exceções pois envolve o conhecimento de Try, Catch e FinallyO bloco Try impede que a execução de um método seja interrompida quando uma Exceção ocorrer, ou seja, define o escopo no qual o método é capaz de capturar a Exceção. A divisão 1/0, contida no bloco Try, gerou uma ArithmeticException que foi capturada pelo primeiro catch, imprimindo "X". Vale lembrar que após a exceção ser capturada por algum catch, os demais são desconsiderados.A seguir a premissa Finally foi executada, imprimindo "Z". A cláusula Finally garante que um código será executado sempre independente de uma Exceção ocorrer ou não.Após o Finally o método continua sua execução, imprimindo F.Saída: XZF Letra D
  • Ao analisar o código superficialmente, podemos ter certeza que duas instruções serão executadas independente de qualquer coisa que esteja acontecendo antes no código. São elas: 
    • A instrução que está depois do "finally": System.out.print("Z"); (finally é sempre executado se ele existir num bloco try/catch)
    • A última instrução: System.out.print("F");  (não depende de mais nada para ser executada).
    Portanto, "Z" e "F" aparecerão na tela de qualquer maneira, sendo assim, podemos eliminar as letras B e C.
    Sobraram as letras A, D e E. perdebemos que "X" aparece nas três possibilidades, "X" pertence a um bloco catch, ou seja, houve uma exceção no código e o bloco try nao foi executado (eliminamos letra A). Também sabemos que somente um catch pode ser capturado por vez, e o catch nessa ocasição foi o catch que captura a exceção ArithmeticException (eliminamos letra E). sobrou a letra D como resposta!
  • d

    Em try catch, o try é o codigo inicial, o catch é o codigo que espera uma exceção especifica no try. Exemplos de exceções sao ArrayIndexOutOfBoundsException e ArithmeticException of qual é a divisao por 0. Porque somente 1 catch é realizado se o try nao funcionar, divisao por 0 esta previsto no ArithmeticException, enquanto que o finally sempre é executado, compondo as opções em d