<p>In Java, what is the difference between the twin methods?</p>

<pre><code>public void methodA() throws AnException {
    //do something
    throw new AnException();
}

public void methodA() {
    //do the same thing
    throw new AnException();
}
</code></pre>

<p>I have a intuition that it has something to do with being a well-designed method (because I put methodA in an interface, declared it the way methodA* does in its implementation and received a warning from Java that "A* cannot override A because A* doesn't throw AnException"). </p>

<p>Is this speculation correct? </p>

<p>Is there any other subtle connotations in the two ways of doing things?</p>

If AnException is a checked exception (in other words, if it doesn't extend RuntimeException) then methodA won't compile.  Checked exceptions must always be declated.
If AnException is an unchecked exception (if it does extend RuntimeException), then either is allowed by the java compiler, and either is interpreted equivalently by the java runtime.
methodA is still probably still preferred in this case, for the reasons of documentation.  The javadoc for your method will show that it might throw AnException.  It's good to let users of your method know what Exceptions they should expect.