<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote">Also, I don't see the point of distinguishing between checked and unchecked exceptions. Because technically it is possible for a method to throw any exception. So, as for method calls I would just say that a method call may throw any exception (maybe special casing autoboxing and string concatenation), and ignoring that possibility would be rather dangerous (especially for the DA case).</div></div></blockquote><div><br></div><div>Actually this is not a problem. The worst that can happen is you end up initializing the variable twice at runtime (once legitimately in the try block, and once again in the catch block due to the unexpected exception). This is not a problem - the JVM doesn't care.</div></div></div></blockquote><div><br></div><div>I think this is the worst thing that can happen:</div><div><br></div><div>```</div><div>int x;<br>try {<br>  f1(); // no checked exception declared<br>  x = 1;<br>  f2(); // may throw MyCheckedException<br>} catch (MyCheckedException e) {<br>  System.out.println(x);<br>}<br></div><div>```</div><div>According to your rules `x` is DA in the catch, and if `f1` misbehaves and throws a `MyCheckedException` then you are reading an uninitialized variable.</div></div></div>