Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!goblin2!goblin.stu.neva.ru!plix.pl!newsfeed1.plix.pl!news.nask.pl!news.nask.org.pl!news.cyf-kr.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for-mail From: Michal Kleczek Newsgroups: comp.lang.java.programmer Subject: Re: About using assertion Date: Thu, 19 May 2011 08:34:58 +0200 Organization: http://onet.pl Lines: 46 Message-ID: References: <92r0e9F6lvU1@mid.individual.net> NNTP-Posting-Host: 87-205-150-44.adsl.inetia.pl Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7Bit X-Trace: news.onet.pl 1305786900 5110 87.205.150.44 (19 May 2011 06:35:00 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Thu, 19 May 2011 06:35:00 +0000 (UTC) User-Agent: KNode/4.4.9 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:4279 Tim McDaniel wrote: > In article <92r0e9F6lvU1@mid.individual.net>, > Robert Klemme wrote: >>On 09.05.2011 18:11, Lew wrote: >>> public class Foo >>> { >>> public double sqrt( double arg ) >>> { >>> if ( arg < 0.0 ) >>> { >>> throw new IllegalArgumentException( >>> "sqrt(): negative argument "+ arg ); >>> } >>> assert arg >= 0.0; // precondition >>> >>> double result; >>> // rest of algorithm ... >>> return result; >>> } >>> } >> >>Lew, I am not sure what you tried to convey with this posting. I for my >>part would say that the assert is a tad too much here since the if >>clause before that gives me enough "confidence" that arg is actually >= >>0 at that line. If it isn't then I have bigger problems than >>calculating square roots of negative numbers. :-) > > Consider > > Foo.sqrt(Double.NaN) > > The "if" fails, but if assertions are enabled, the "assert" catches > it. This might be an illustration that an assertion can be useful > even if you have "confidence" that it could never fire. > > (As a tangent, I'm not sure whether "Foo.sqrt(-0.0)" should throw an > exception or not.) > What a great example of why assertions are usefull - even if they look redundant and not needed. Thank You. -- Michal