Why is it necessary to create a lot of different exception types? : <p>Most of the time, if I want to terminate the execution of the program at a certain critical point, I just create a RuntimeException with some informational messages:</p>

<pre><code>throw new RuntimeException("ERROR: this is wrong! Fix it first!")
</code></pre>

<p>In Java there are lots of different built-in exception types, and books also teach how to create your own custom exception types. Is that really necessary? Isn't a RuntimeException sufficient for most purposes from a practical point point of view?  </p>
