Why does Java Compiler refuse to compile this?
<p>Why does Java Compiler raise "The local variable s may not have been initialized" in the finally block. I can not figure out in which flow of code, <strong>s</strong> remains un-initialized.</p>

<pre><code> public static void test() {
    String s;
    try {
        s = "abc";
    } catch (Throwable e) {
        s = "throwable";
    } finally {
        System.out.println(s.getClass()); //----&gt;(The local variable s may not have been initialized)
    }
}
</code></pre>
