research this code:
public class TestFinalAndCatch { private final int i; TestFinalAndCatch(String[] args) { try { i = method1()
i is final, so it can only be assigned once. The compiler is probably not smart enough to realize that if an exception is thrown, the first assignment won't take place, and if an exception isn't thrown, the second assignment won't take place.
i