 <p>This is because <code>NullPointerException</code> is a so-called "unchecked" exception. You don't need to declare them in the <code>throws</code> clause.</p> <p>However, a casual <code>Exception</code> is <em>not</em> unchecked, and you <em>do</em> need to declare in a <code>throws</code> declaration. You need to make <code>Method()</code> throw <code>Exception</code> in your second code snippet.</p> <p>Unchecked exceptions are <code>RuntimeException</code>, <code>Error</code> and derivate classes. <code>NullPointerException</code> derivates from <code>RuntimeException</code>.</p>