01 grudnia 2011

Zagadka z Rethrowing Exceptions with More Inclusive Type Checking w Java 7

Czytając bardzo krótki, acz treściwy wpis A New Java Exception Handling Idiom o nowej cesze Java 7 - Rethrowing Exceptions with More Inclusive Type Checking pomyślałem o pewnej zagadce, której próba rozwiązania wymusi choćby minimalne zrozumienie zmian wokół obsługi wyjątków w najnowszym wydaniu Javy 7. Takie perełki sprawiają, że określenie zmian jako niewielkich w tym wydaniu jest czymś, z czym mam kłopot, aby się zgodzić.

Zagadka:
package pl.japila.java7;

public class PreciseRethrowDemo {

    public static void main(String[] args) throws Exception {
        PreciseRethrowDemo demo = new PreciseRethrowDemo();
        demo.createFoo();
    }

    Foo createFoo() throws FooException {
        Bar bar = new Bar();
        try {
            return new Foo(bar);
        } catch (Throwable t) {
            t = new SubFooException();
            bar.cleanup();
            throw t;
        }
    }

    @SuppressWarnings("serial")
    static class FooException extends Exception {}
    @SuppressWarnings("serial")
    static class SubFooException extends FooException {}
    static class Foo {
        Foo(Bar bar) throws FooException {
            throw new FooException();
        };
    }
    static class Bar {
        void cleanup() {};
    }

}
Czy powyższe skompiluje się? Jeśli tak, jaki będzie rezultat? Odpowiedzi można umieszczać w komentarzach. Proszę o kolejne zagadki, jeśli spotkałeś/-aś się z podobnymi w obszarze obsługi wyjątków w Java 7.

p.s. Za kilka dni - 17 grudnia 2011 - kończy się możliwość podejścia do testowego egzaminu na Oracle Certified Associate, Java SE 7 Programmer. System wyliczył mi koszt na poziomie 61 USD i przy niekorzystnym kursie USD/PLN mimo wszystko planuję podejść do niego za 2 tygodnie. A Ty?

7 komentarzy:

  1. Nie mogę za bardzo zrozumieć tej granicznej daty 17 grudnia dla egzamiu. Czy jest to data do której trzeba zaliczyć egzamin (przystąpić) czy się zarejestrować / wykupić?

    OdpowiedzUsuń
  2. Nie wiem, ale domyślam się, że jest to data ostatniego dnia rejestracji na egzamin, który powinien odbyć się...cóż, nie wiem :( Proponuję podejść 17.12.

    OdpowiedzUsuń
  3. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  4. Cześć Jacku!
    Mam na imię Łukasz. Pierwszy raz zobaczyłem Cię na JDD2011 (moja pierwsza konferencja) i kieruję do Ciebie słowa uznania za entuzjazm i pasję.

    Chciałem Cię zapytać czy planujesz podejścć do zdawania certyfikatu 'Upgrade to Java SE 7 Programmer'? Z tego co widzę, to egzamin w finalnej wersji będzie dostępny koło lutego ( 10 weeks from exam close date). Mam jeszcze pytanie odnośnie wersji podstawowej, nie upgrade. Widzę, że są dwa poziomy: 'Java SE 7 Programmer I i II'. Wiesz może co one oznaczają? Pozdrawiam.

    OdpowiedzUsuń
  5. Cześć Łukasz!
    Nie śledzę rozwoju certyfikatów i stąd niewiele wiem na ich temat. Ostatnio zobaczyłem, że Java SE 7 Programmer I pojawił się w wersji BETA i można do niego podchodzić do 17.12. Ja podchodzę!

    OdpowiedzUsuń
  6. Wielkie dzieki Jacek za wzmianke w artykule o beta testach.

    Wydaje sie, ze "close date" dla beta certyfikatow jest ostateczna data przystapienia do egzaminu (rejestracja przypuszczalnie najpozniej dzien wczesniej). Sprawdzilem kilka centrow i w zadnym nie mozna zabukowac miejsca po wyznaczonym przez Oracle terminie.

    Probujac odpowiedziec na pytanie Łukasza odnosnie "1Z1-804" - egzamin jest caly czas w przygotowaniu, ale IMO mozna sie spodziewac tego samego co w 1Z1-805 ("Upgrade to Java SE 7 Programmer"), tj. duzo API (NIO2, JDBC 4.1, resource bundle), na 100% watki i oczywiscie fundamentals (Java SE 7).

    PS: 1Z1-805 "Upgrade to Java SE 7 Programmer" jest dostepny do 7.01.2012.

    Szczegoly nt. beta testow na: http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=182&p_org_id=27&lang=US#2

    OdpowiedzUsuń
  7. Dla mnie już jest wszystko jasne odnośnie Java SE 7 Programmer I i II. Wersja I to odpowiednik Associate (podstawy Javy SE) a wersja II to już poziom zbliżony do SCJP (doszły nowe wymagania).

    @Jacku, pochwal się jak wrażenia po egzaminie w wersji beta. Ja planuję podejść do Upgrade, ale jak będzie już finalna wersja i trochę materiałów do nauki bo na razie nie wiadomo czego się spodziewać.

    OdpowiedzUsuń