<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Bruce Eckel is Wrong</title>
	<atom:link href="http://cafe.elharo.com/programming/bruce-eckel-is-wrong/feed/" rel="self" type="application/rss+xml" />
	<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/</link>
	<description>Longer than a blog; shorter than a book</description>
	<lastBuildDate>Wed, 08 Feb 2012 21:45:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Peca</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-2/#comment-787665</link>
		<dc:creator>Peca</dc:creator>
		<pubDate>Mon, 05 Sep 2011 16:04:51 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-787665</guid>
		<description>The fact that this language feature has being discussed at such great length and with such opposing arguments, 15 years after its introduction, to me is an indication of a bad design choice. If the Java community is still struggling to properly understand the intent and proper usage of a feature, it should not have made the specification.</description>
		<content:encoded><![CDATA[<p>The fact that this language feature has being discussed at such great length and with such opposing arguments, 15 years after its introduction, to me is an indication of a bad design choice. If the Java community is still struggling to properly understand the intent and proper usage of a feature, it should not have made the specification.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eddie</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-2/#comment-743815</link>
		<dc:creator>Eddie</dc:creator>
		<pubDate>Wed, 20 Jul 2011 21:04:32 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-743815</guid>
		<description>@Bruce Eckel, your discussion of &quot;the culture of Java&quot; discusses the supporters of Java as if they are fundamentally different from the supporters of any other language or framework.  :)  Unless by &quot;the culture of Java&quot; you specifically and narrowly refer to the culture of Sun (now Oracle) and you&#039;re referring only to the architects, designers and implementers of the language itself.  I thought I had seen some very clear discussions from folks at Sun in years past recognizing the errors made in AWT and the early collection classes, specifically.  I have yet to run into a Java programmer who maintains that Java is absolutely perfect, with no problems or irritations.  Anyway, I have yet to find any computer language that perfectly strikes the balance between all of the various tensions pulling on a computer language: ease of development, ease of support, simplicity, code bugs being caught early due to language features, etc.  Have you?  IMHO, there is no perfect balance.

@others:

Ultimately, you can write stable and reliable code in any language, even assembly, even shell script.  The question is:  &quot;How much work is it?&quot;   How hard is it to find and fix the 1000 hour bugs?  To what degree does the language or its toolkit or libraries help prevent the introduction of bugs?  What happens when you swap 3rd party components with a newer version or different implementation?

I lean on the side of &quot;checked exceptions are a very good feature and have helped me write more robust code.&quot; That said, I won&#039;t argue that Java has a perfect implementation of them.  When coding in Java vs C#, I have a *much* clearer picture of what can go wrong with a Java library, simply by examining the Exceptions that are thrown.  I think that Anders&#039; argument about checked Exceptions not scaling is only true if you refuse to wrap checked Exceptions in other (checked or unchecked) Exceptions.  Which is a silly choice to make.  Wrapping exceptions is an essential part of maintaining an abstraction.  You really don&#039;t care, given an interface, that it can fail with this low level Exception or that one.  But you do need to know which methods can fail by throwing an Exception.  You will either know this because the language enforces it or through experience of the program failing when an uncaught exception is thrown.  Which of those is preferable depends on many things, including the cost of failure, the cost of doing it right the first time, your unit test coverage, the documentation thoroughness of the 3rd party library, and so on.

Why have other languages not implement Java checked exceptions?  I think the choice of everything being unchecked is inferior and lazier and yet much easier to choose.  I think the better choice -- superior to both -- hasn&#039;t been implemented in a language yet.  Checked exceptions, IMHO, are the superior choice of those two choices, but they come with a lot of baggage in their current implementation and are maybe not appropriate to all choices.  This is why there are so many different kinds of languages out there in common use.

Maybe what is needed is a method of automatically wrapping exceptions to match the current software layer, so a method could declare that any thrown exception that is not handled is automatically transformed into a different type appropriate to this layer of the abstraction.  I agree with others who say, &quot;Saying the *best* choice out of all options is that all exceptions are unchecked exceptions is like saying error checking code is not that important.&quot;  It is true that error checking code can add a big clutter to the code.  But does that mean it&#039;s better to go without it?

Those who say that it&#039;s best to catch Exceptions only at the top event loop ... clearly don&#039;t work on big enough systems, or at least they work on systems where it&#039;s always OK to throw away a bad event or request.  There are certainly realms where that is true enough.  It is most definitely not true everywhere.  It does not strike me as a surprise that where Java succeeded was at the enterprise level, not at the desktop or web level.  I commonly have a try/catch around main event loop as a precautionary measure.  I also commonly install an &quot;uncaught exception handler&quot; that logs so that I will always know about uncaught exceptions in 3rd party code.  But this is defensive programming, not the solution.

I think the ultimate solution to checked/unchecked will be found in some new language that will basically choose Java style checked + unchecked exceptions but with a significantly different twist, including a lot of syntactic sugar to solve the many valid points people have brought up about how annoying it can be to handle checked Exceptions.  Things such as:

1) Automatic exception wrapping so exceptions you don&#039;t want to handle can bubble up without being exposed as the base exception they are.  If you are a security 3rd party library and you fail because your configuration caused you to throw a MalformedURLException, you want to throw a SecurityConfigurationException that wraps the other so the programmer making use of your library has a proper abstraction.
1a) Maybe something like try {} catch {} finally {} rethrows XXX where any Exception not explicitly caught is automatically wrapped as XXX, which can itself be checked or unchecked.  Then you declare that this method throws XXX, and not whatever set of Exceptions could be wrapped by it, from that code block.
2) Interface versioning so you can change an interface, changing what Exceptions are or are not declared to be thrown, with ways of handling mismatching interface versions.  Maybe automatic wrapping can solve this problem.
3) Perhaps the ability to mark a given Exception instance as checked or unchecked in a method&#039;s declaration or code, so you can declaratively note whether something is expected to be caught or not.  Maybe an annotation.
4) More things.  :)

I disagree with many of Java&#039;s choices with regards to what is a checked exception and what is not, and in both directions.  I find, for example, that my code is more stable when I catch NumberFormatException, as this is almost always NOT a programming bug, but a bad input that needs to be handled.  And I have found it appropriate in a very small number of places to catch Throwable, even if to log and rethrow, which as a general practice is not great but in the right place can provide invaluable information if you cannot depend on other software layers to report things appropriately.  Also, &quot;software should die on an Error being thrown&quot; is not always true.  If you get an out of memory error because the current request requires you to allocate an object that is too big to fit in memory, then you fail that request but don&#039;t crash the program which is otherwise (in my experience) handling things just fine.  It just got an invalid request.  This depends on context and on whether or not one failed request means others can continue.  How independent are the requests coming in?  A programmer knows.  An language runtime does not.</description>
		<content:encoded><![CDATA[<p>@Bruce Eckel, your discussion of &#8220;the culture of Java&#8221; discusses the supporters of Java as if they are fundamentally different from the supporters of any other language or framework.  <img src='http://cafe.elharo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Unless by &#8220;the culture of Java&#8221; you specifically and narrowly refer to the culture of Sun (now Oracle) and you&#8217;re referring only to the architects, designers and implementers of the language itself.  I thought I had seen some very clear discussions from folks at Sun in years past recognizing the errors made in AWT and the early collection classes, specifically.  I have yet to run into a Java programmer who maintains that Java is absolutely perfect, with no problems or irritations.  Anyway, I have yet to find any computer language that perfectly strikes the balance between all of the various tensions pulling on a computer language: ease of development, ease of support, simplicity, code bugs being caught early due to language features, etc.  Have you?  IMHO, there is no perfect balance.</p>
<p>@others:</p>
<p>Ultimately, you can write stable and reliable code in any language, even assembly, even shell script.  The question is:  &#8220;How much work is it?&#8221;   How hard is it to find and fix the 1000 hour bugs?  To what degree does the language or its toolkit or libraries help prevent the introduction of bugs?  What happens when you swap 3rd party components with a newer version or different implementation?</p>
<p>I lean on the side of &#8220;checked exceptions are a very good feature and have helped me write more robust code.&#8221; That said, I won&#8217;t argue that Java has a perfect implementation of them.  When coding in Java vs C#, I have a *much* clearer picture of what can go wrong with a Java library, simply by examining the Exceptions that are thrown.  I think that Anders&#8217; argument about checked Exceptions not scaling is only true if you refuse to wrap checked Exceptions in other (checked or unchecked) Exceptions.  Which is a silly choice to make.  Wrapping exceptions is an essential part of maintaining an abstraction.  You really don&#8217;t care, given an interface, that it can fail with this low level Exception or that one.  But you do need to know which methods can fail by throwing an Exception.  You will either know this because the language enforces it or through experience of the program failing when an uncaught exception is thrown.  Which of those is preferable depends on many things, including the cost of failure, the cost of doing it right the first time, your unit test coverage, the documentation thoroughness of the 3rd party library, and so on.</p>
<p>Why have other languages not implement Java checked exceptions?  I think the choice of everything being unchecked is inferior and lazier and yet much easier to choose.  I think the better choice &#8212; superior to both &#8212; hasn&#8217;t been implemented in a language yet.  Checked exceptions, IMHO, are the superior choice of those two choices, but they come with a lot of baggage in their current implementation and are maybe not appropriate to all choices.  This is why there are so many different kinds of languages out there in common use.</p>
<p>Maybe what is needed is a method of automatically wrapping exceptions to match the current software layer, so a method could declare that any thrown exception that is not handled is automatically transformed into a different type appropriate to this layer of the abstraction.  I agree with others who say, &#8220;Saying the *best* choice out of all options is that all exceptions are unchecked exceptions is like saying error checking code is not that important.&#8221;  It is true that error checking code can add a big clutter to the code.  But does that mean it&#8217;s better to go without it?</p>
<p>Those who say that it&#8217;s best to catch Exceptions only at the top event loop &#8230; clearly don&#8217;t work on big enough systems, or at least they work on systems where it&#8217;s always OK to throw away a bad event or request.  There are certainly realms where that is true enough.  It is most definitely not true everywhere.  It does not strike me as a surprise that where Java succeeded was at the enterprise level, not at the desktop or web level.  I commonly have a try/catch around main event loop as a precautionary measure.  I also commonly install an &#8220;uncaught exception handler&#8221; that logs so that I will always know about uncaught exceptions in 3rd party code.  But this is defensive programming, not the solution.</p>
<p>I think the ultimate solution to checked/unchecked will be found in some new language that will basically choose Java style checked + unchecked exceptions but with a significantly different twist, including a lot of syntactic sugar to solve the many valid points people have brought up about how annoying it can be to handle checked Exceptions.  Things such as:</p>
<p>1) Automatic exception wrapping so exceptions you don&#8217;t want to handle can bubble up without being exposed as the base exception they are.  If you are a security 3rd party library and you fail because your configuration caused you to throw a MalformedURLException, you want to throw a SecurityConfigurationException that wraps the other so the programmer making use of your library has a proper abstraction.<br />
1a) Maybe something like try {} catch {} finally {} rethrows XXX where any Exception not explicitly caught is automatically wrapped as XXX, which can itself be checked or unchecked.  Then you declare that this method throws XXX, and not whatever set of Exceptions could be wrapped by it, from that code block.<br />
2) Interface versioning so you can change an interface, changing what Exceptions are or are not declared to be thrown, with ways of handling mismatching interface versions.  Maybe automatic wrapping can solve this problem.<br />
3) Perhaps the ability to mark a given Exception instance as checked or unchecked in a method&#8217;s declaration or code, so you can declaratively note whether something is expected to be caught or not.  Maybe an annotation.<br />
4) More things.  <img src='http://cafe.elharo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I disagree with many of Java&#8217;s choices with regards to what is a checked exception and what is not, and in both directions.  I find, for example, that my code is more stable when I catch NumberFormatException, as this is almost always NOT a programming bug, but a bad input that needs to be handled.  And I have found it appropriate in a very small number of places to catch Throwable, even if to log and rethrow, which as a general practice is not great but in the right place can provide invaluable information if you cannot depend on other software layers to report things appropriately.  Also, &#8220;software should die on an Error being thrown&#8221; is not always true.  If you get an out of memory error because the current request requires you to allocate an object that is too big to fit in memory, then you fail that request but don&#8217;t crash the program which is otherwise (in my experience) handling things just fine.  It just got an invalid request.  This depends on context and on whether or not one failed request means others can continue.  How independent are the requests coming in?  A programmer knows.  An language runtime does not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric S</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-2/#comment-511569</link>
		<dc:creator>Eric S</dc:creator>
		<pubDate>Sat, 11 Sep 2010 06:03:30 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-511569</guid>
		<description>People continue to repeat Anders&#039; comment about checked exceptions not scaling, though Gosling debunked this way back in 2003. I&#039;ve worked on large Java systems and never seen this problem either. It only happens if programmers are using exceptions incorrectly, by passing all exceptions up to some top level by sticking them on the throws class without regard for whether they are exposing implemention details.

Here&#039;s the Gosling interview: http://www.artima.com/intv/solidP.html  It&#039;s funny, in this same article, he pretty much covered everything that has just been discussed here. There&#039;s nothing new here. Why do we have to keep having this same argument? Personally I blame it on Java not having come with clear enough instructions about how to use exceptions properly; the arguments and explanations appeared after usage in the wild was already all over the place, and the seeds of confusion implanted in the culture.</description>
		<content:encoded><![CDATA[<p>People continue to repeat Anders&#8217; comment about checked exceptions not scaling, though Gosling debunked this way back in 2003. I&#8217;ve worked on large Java systems and never seen this problem either. It only happens if programmers are using exceptions incorrectly, by passing all exceptions up to some top level by sticking them on the throws class without regard for whether they are exposing implemention details.</p>
<p>Here&#8217;s the Gosling interview: <a href="http://www.artima.com/intv/solidP.html" rel="nofollow">http://www.artima.com/intv/solidP.html</a>  It&#8217;s funny, in this same article, he pretty much covered everything that has just been discussed here. There&#8217;s nothing new here. Why do we have to keep having this same argument? Personally I blame it on Java not having come with clear enough instructions about how to use exceptions properly; the arguments and explanations appeared after usage in the wild was already all over the place, and the seeds of confusion implanted in the culture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Varun Chopra</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-2/#comment-508188</link>
		<dc:creator>Varun Chopra</dc:creator>
		<pubDate>Thu, 02 Sep 2010 06:34:49 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-508188</guid>
		<description>&lt;i&gt;Squirrelsewer Says: 
April 20th, 2010 at 6:39 pm
For all of the checked exception fans: can you give us some idea of which Exceptions you commonly catch and handle? What % of checked exceptions are you able to handle?&lt;/i&gt;

I agree with Squirrelsewer. Any code examples by Checked exception fans will be important for programmers to understand their point. Just repeating that programmers can handle errors and take alternate actions is not enough. Why so uncommon  are the programmers taking alternate actions and what are they doing apart from logging or displaying error to the user?</description>
		<content:encoded><![CDATA[<p><i>Squirrelsewer Says:<br />
April 20th, 2010 at 6:39 pm<br />
For all of the checked exception fans: can you give us some idea of which Exceptions you commonly catch and handle? What % of checked exceptions are you able to handle?</i></p>
<p>I agree with Squirrelsewer. Any code examples by Checked exception fans will be important for programmers to understand their point. Just repeating that programmers can handle errors and take alternate actions is not enough. Why so uncommon  are the programmers taking alternate actions and what are they doing apart from logging or displaying error to the user?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Julian T</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-2/#comment-497172</link>
		<dc:creator>Julian T</dc:creator>
		<pubDate>Wed, 21 Jul 2010 19:22:13 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-497172</guid>
		<description>Interesting thread! One thing I&#039;d add is that that checked exceptions sometimes don&#039;t sit well with inexperienced and/or lazy coders who are using modern IDEs.

I&#039;ve come across a number of cases like this: the coder writes a line, the IDE underlines it with a red squiggle to tell the coder that an exception needs to be handled. Coder clicks on the helpful little lightbulb in the sidebar, IDE surrounds the code with try/catch and... bingo! The error goes away, but there&#039;s nothing in the catch (maybe a log message if you&#039;re lucky), and you have a swallowed exception.

If I had a pound/dollar/euro for every time I&#039;ve seen that in the last couple of years, I&#039;d be able to buy myself a reasonable lunch. At least with runtime exceptions people don&#039;t try to catch them and they end up crashing something...

(Incidentally, does anyone know of any other languages that have implemented checked exceptions? I&#039;d be interested to know...)

jt</description>
		<content:encoded><![CDATA[<p>Interesting thread! One thing I&#8217;d add is that that checked exceptions sometimes don&#8217;t sit well with inexperienced and/or lazy coders who are using modern IDEs.</p>
<p>I&#8217;ve come across a number of cases like this: the coder writes a line, the IDE underlines it with a red squiggle to tell the coder that an exception needs to be handled. Coder clicks on the helpful little lightbulb in the sidebar, IDE surrounds the code with try/catch and&#8230; bingo! The error goes away, but there&#8217;s nothing in the catch (maybe a log message if you&#8217;re lucky), and you have a swallowed exception.</p>
<p>If I had a pound/dollar/euro for every time I&#8217;ve seen that in the last couple of years, I&#8217;d be able to buy myself a reasonable lunch. At least with runtime exceptions people don&#8217;t try to catch them and they end up crashing something&#8230;</p>
<p>(Incidentally, does anyone know of any other languages that have implemented checked exceptions? I&#8217;d be interested to know&#8230;)</p>
<p>jt</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sajal Dutta</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-2/#comment-490470</link>
		<dc:creator>Sajal Dutta</dc:creator>
		<pubDate>Mon, 21 Jun 2010 15:13:56 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-490470</guid>
		<description>The more unwanted/unexpected situations I can catch, the better! At least the program can have a graceful termination. It&#039;s healthy from the end user perspective. PERIOD.</description>
		<content:encoded><![CDATA[<p>The more unwanted/unexpected situations I can catch, the better! At least the program can have a graceful termination. It&#8217;s healthy from the end user perspective. PERIOD.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pedro Newsletter 23-26.04.2010 &#171; Pragmatic Programmer Issues &#8211; pietrowski.info</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-1/#comment-482066</link>
		<dc:creator>Pedro Newsletter 23-26.04.2010 &#171; Pragmatic Programmer Issues &#8211; pietrowski.info</dc:creator>
		<pubDate>Sun, 16 May 2010 19:39:27 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-482066</guid>
		<description>[...] about exception usage and one more, but I’m still against checked [...]</description>
		<content:encoded><![CDATA[<p>[...] about exception usage and one more, but I’m still against checked [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Egor</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-1/#comment-479476</link>
		<dc:creator>Egor</dc:creator>
		<pubDate>Mon, 03 May 2010 08:00:07 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-479476</guid>
		<description>For me a good advice was: &quot;create your app in some scripting language as a prototype, then convert it into type-safe language&quot;. For scripting language I&#039;ve chosen BeanShell because its syntax is very close to Java. With BeanShell I generally get much faster to something that works, and it&#039;s a joy! A lot of information about types as well as about exceptions is generally missing in this prototype. But then comes a moment when this script becomes rather big and you cannot modify it easily and starting to miss for Eclipse environment with a lot of structure and documentation information. And converting these BeanShell scripts into valid Java programs is so easy in Eclipse with it&#039;s quick assist tools! And now you have to think more about the interface than about the actual implementation. And putting proper JavaDocs, and indicating appropriate exceptions.

So, for me writing programs is most pleasant with this 2-pass approach: 
- first creating the prototype, no need to think about the exceptions and lot of other things
- and then create a Java program with exceptions properly declared.</description>
		<content:encoded><![CDATA[<p>For me a good advice was: &#8220;create your app in some scripting language as a prototype, then convert it into type-safe language&#8221;. For scripting language I&#8217;ve chosen BeanShell because its syntax is very close to Java. With BeanShell I generally get much faster to something that works, and it&#8217;s a joy! A lot of information about types as well as about exceptions is generally missing in this prototype. But then comes a moment when this script becomes rather big and you cannot modify it easily and starting to miss for Eclipse environment with a lot of structure and documentation information. And converting these BeanShell scripts into valid Java programs is so easy in Eclipse with it&#8217;s quick assist tools! And now you have to think more about the interface than about the actual implementation. And putting proper JavaDocs, and indicating appropriate exceptions.</p>
<p>So, for me writing programs is most pleasant with this 2-pass approach:<br />
- first creating the prototype, no need to think about the exceptions and lot of other things<br />
- and then create a Java program with exceptions properly declared.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kjetil Valstadsve</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-1/#comment-479311</link>
		<dc:creator>Kjetil Valstadsve</dc:creator>
		<pubDate>Sun, 02 May 2010 12:05:20 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-479311</guid>
		<description>Seems like my blog on exceptions from the future got automatically tracked here. It&#039;s a bit stream-of-consciousness, but my main point is that you can&#039;t predict the future. Java, on the other hand, is effectively handing out future prediction wands to everybody, and suggesting that their usage is mandatory. Obviously, there were good intentions to make Java software generally robust, but 15 years later I can&#039;t really see that checked-ness of exceptions have contributed to solid facts on the ground here. Rather, I think the exception mechanism in itself isn&#039;t being used effectively, maybe because the compiler support has given us a false sense of security. Lots of efforts have gone into &quot;handling&quot; exceptions that will never occur, and lots of actual errors have gone unhandled because neither the compiler, nor anyone else, could have predicted the exceptions BY TYPE. 

I&#039;ve been to Elliottes blog before and labored this point. I won&#039;t spend so much effort here this time :-)</description>
		<content:encoded><![CDATA[<p>Seems like my blog on exceptions from the future got automatically tracked here. It&#8217;s a bit stream-of-consciousness, but my main point is that you can&#8217;t predict the future. Java, on the other hand, is effectively handing out future prediction wands to everybody, and suggesting that their usage is mandatory. Obviously, there were good intentions to make Java software generally robust, but 15 years later I can&#8217;t really see that checked-ness of exceptions have contributed to solid facts on the ground here. Rather, I think the exception mechanism in itself isn&#8217;t being used effectively, maybe because the compiler support has given us a false sense of security. Lots of efforts have gone into &#8220;handling&#8221; exceptions that will never occur, and lots of actual errors have gone unhandled because neither the compiler, nor anyone else, could have predicted the exceptions BY TYPE. </p>
<p>I&#8217;ve been to Elliottes blog before and labored this point. I won&#8217;t spend so much effort here this time <img src='http://cafe.elharo.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The exceptions, they come from the future &#8211; they all come from the future! &#171; The Subclass Explosion</title>
		<link>http://cafe.elharo.com/programming/bruce-eckel-is-wrong/comment-page-1/#comment-479114</link>
		<dc:creator>The exceptions, they come from the future &#8211; they all come from the future! &#171; The Subclass Explosion</dc:creator>
		<pubDate>Sat, 01 May 2010 16:19:21 +0000</pubDate>
		<guid isPermaLink="false">http://cafe.elharo.com/?p=517#comment-479114</guid>
		<description>[...] why is really hard, or so it seems. It must be, since so many have tried and still it hasn&#8217;t sunk [...]</description>
		<content:encoded><![CDATA[<p>[...] why is really hard, or so it seems. It must be, since so many have tried and still it hasn&#8217;t sunk [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

