Why is try/catch needed in some cases but not others?
<p>I've been doing some pure Java development recently, and I'm using an external lib that exposes a small number of methods, each of which have the possibility of throwing an <code>Exception</code>.</p>

<p>Eclipse won't let me compile my program unless I wrap each of those calls in a <code>try-catch</code> block. So far, no big deal.</p>

<p>Then I noticed some things, like <code>ArrayList.add()</code>, which throws <code>IndexOutOfBoundsException</code>. How is it that I can call something like this without needing to wrap it in a <code>try..catch</code>? Obv, in this particular case, it would be incredibly irritating if you had to do it each time, but how and why is <code>try-catch</code> enforced in some situations, but not others?</p>
