Java, exercício análise

assunto: excepções
pergunta: qual o output do seguinte:

package recursopa2;

class UmaExcepcao extends Exception {
    //foi definida uma excepção
}

class Conta {
    int c = 4;

    void f(int i) throws UmaExcepcao {
        if (i < c) {
            System.out.print(" f1");
            f(++i);
            return;
        } else try {
            System.out.print(" f2");
            if (i == c) {
                throw new UmaExcepcao();
            }
        } finally {
            System.out.print(" f3");
        }
        System.out.print(" f4");
    }

    public static void main2(String[] args) {
        Conta c1 = new Conta();
        Conta c2 = new Conta();
        //não existe nenhum construtor

        try {
            c1.f(3);
            // saida: System.out.print(" f1");
            // saida: System.out.print(" f2");
            // i == c, true
            // lança uma excepção, throw new UmaExcepcao(); 
            // saida: faz sempre o finally, System.out.print(" f3");
            // e terminou em estado de excepção e não faz o f4, 
           
            System.out.print(" m1");
            c2.f(4);
            System.out.print(" m2");
            
        } catch (UmaExcepcao ex1) {
            System.out.print(" m3");
            // saida: System.out.print(" m3");
            // porque apanhou uma excepção
            
            try {
                c1.f(5);
                // saida: System.out.print(" f2");
                // i == c, falso
                // saida: System.out.print(" f3");
                // saida: System.out.print(" f4");
                // porque não tinha excepção
                
            } catch (UmaExcepcao ex2) {
                System.out.print(" m4");
            }
        }
        System.out.print(" m5");
        // saida: System.out.print(" m5");
        // porque não tinha excepção
    }
}

//para testar
public class main {
    public static void main(String[] args) {
        Conta.main2(args);
    }
}

assunto: excepções
pergunta: qual o output do seguinte:

package recursopa2;

class EstaExcepcao extends Exception {
}

class main {
    static void f() throws EstaExcepcao {
        try {
            System.out.println("Ponto 1");
            throw new EstaExcepcao();
            //saida: ponto 1
            
            //System.out.println("AAAAA"); //se existir dá erro
            //depois do lançamento da excepção dá sempre erro 
        } catch (EstaExcepcao e) {
            System.out.println("Ponto 2");
            //saida: ponto 2
            
            throw e;
            //vai ser relançada
        } finally {
            System.out.println("Ponto 3");
            //saida: ponto 3
        }
         //System.out.println("BBBB"); //se existice
         //como houve erro nunca iria ser executada, por exemplo
         //não havendo o throw
    }

    public static void main(String[] args) {
        try {
            f(); 
            // f() sai em erro, vai fazer o catch
            System.out.println("Ponto 4");
        } catch (EstaExcepcao e) {
            System.out.println("Ponto 5");
            //saida: ponto 5
        } catch (Exception e) {
            System.out.println("Ponto 6");
        }
        System.out.println("Ponto 7");
        //saida: ponto 5
    }
}
Tags : ,

0 thoughts on “Java, exercício análise”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.