čtvrtek 18. září 2008

return ve finally ?

Na certifikačním serevru javablackbelt jsem narazil na otázku, jak se chová fuknce, pokud má více návratových míst. Docela mě zarazilo, že návratovou hodnotu lze přepsat ve finally bloku.


public class FinallyExample {

public static void main( String[] args ) {
System.out.println( test(true) );
System.out.println( test(false) );
}

public static String test(boolean e) {
try {
if (e) throw new RuntimeException();
return "A";
} catch ( Exception ex ) {
return "B";
} finally {
return "C";
}
}
}

Bez ohledu na to, jestli v metodě dojde či ne k vyjímce, hodnota ve finally bloku nakonec vyhrává - program tedy vypíše dvakrát C C.

Inu, ne nadarmo je v idei automaticky zapnutá inspekce, která ihned varuje.

This inspection reports any instances of return statements inside of finally blocks. While occasionally intended, such return statements may mask exceptions thrown, and tremendously complicate debugging.

středa 17. září 2008

Konec aplikačních serverů tak jak je známe?

Po shlednutí přednášky Roda Johnsona se nemůžu ubránit dojmu, že koncept Spring application platform totálně převálcuje stávající implementace aplikačních serverů, tak jak je známe dnes.
Na druhou stranu, jak znám stávající konzervativní zákazníky, kteří ještě ani nepřešli na Javu 5, mě optimismums opouští.
Která banka bude první, a postaví svoje aplikace na springu?