Assigning a default value to a final variable in case of an exception in Java

Posted by frenetisch applaudierend on Stack Overflow See other posts from Stack Overflow or by frenetisch applaudierend
Published on 2010-04-08T20:43:52Z Indexed on 2010/04/08 22:23 UTC
Read the original article Hit count: 335

Filed under:
|
|

Why won't Java let me assign a value to a final variable in a catch block after setting the value in the try block, even if it is not possible for the final value to be written in case of an exception.

Here is an example that demonstrates the problem:

public class FooBar {

    private final int foo;

    private FooBar() {
        try {
            int x = bla();
            foo = x; // In case of an exception this line is never reached
        } catch (Exception ex) {
            foo = 0; // But the compiler complains
                     // that foo might have been initialized
        }
    }

    private int bla() { // You can use any of the lines below, neither works
        // throw new RuntimeException();
        return 0;
    }
}

The problem is not hard to work around, but I would like to understand why the compiler does not accept this.

Thanks in advance for any inputs!

© Stack Overflow or respective owner

Related posts about java

Related posts about final