<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alessandro Stella - Appunti di informatica &#187; assert</title>
	<atom:link href="http://www.alessandrostella.it/tag/assert/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alessandrostella.it</link>
	<description>Appunti sparsi di informatica</description>
	<lastBuildDate>Sat, 04 Feb 2012 20:57:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Java e le asserzioni</title>
		<link>http://www.alessandrostella.it/programmazione/2009/11/java-e-le-asserzioni/</link>
		<comments>http://www.alessandrostella.it/programmazione/2009/11/java-e-le-asserzioni/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 18:24:57 +0000</pubDate>
		<dc:creator>Alessandro</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[assert]]></category>
		<category><![CDATA[assertion]]></category>
		<category><![CDATA[asserzioni]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.alessandrostella.it/?p=270</guid>
		<description><![CDATA[Molti le nominano, pochi le usano, meno le conoscono. Eppure sono moderatamente utili e molto semplici da usare&#8230; In java una 1assert è un&#8217;affermazione che il programmatore fa in un certo punto del codice da lui scritto.. Il compilatore si occupa di verificare che tale affermazione sia corretta, in caso contrario lancia un&#8217;eccezione di tipo [...]<div id="artCorr">
            <h4>Articoli correlati</h4>
        <ol>
	    	    <li><a href="http://www.alessandrostella.it/programmazione/2010/04/java-anonymous-classes/" rel="bookmark">Java, anonymous classes (classi anonime)</a><!-- (11.2)--></li>
	    	    <li><a href="http://www.alessandrostella.it/programmazione/2010/02/java-1-6-nested-type-e-inner-classes/" rel="bookmark">Java 1.6, nested type e inner classes</a><!-- (8.4)--></li>
	    	    <li><a href="http://www.alessandrostella.it/programmazione/2010/04/java-ciclo-di-vita-degli-oggetti-garbage-collection/" rel="bookmark">Java, ciclo di vita degli oggetti e garbage collection</a><!-- (8)--></li>
	            </ol>
    </div>]]></description>
			<content:encoded><![CDATA[<p>Molti le nominano, pochi le usano, meno le conoscono.<br />
Eppure sono moderatamente utili e molto semplici da usare&#8230;<br />
<strong>In java una</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">assert</div></td></tr></tbody></table></div>
<p>è un&#8217;affermazione che il programmatore fa in un certo punto del codice da lui scritto.</strong>. Il compilatore si occupa di verificare che tale affermazione sia corretta, in caso contrario lancia un&#8217;eccezione di tipo unchecked. E&#8217; decisamente opportuno disabilitarle in fase di produzione del sistema, mentre possono essere utili in fase di sviluppo e test.</p>
<p><strong>Come si dichiarano?</strong><br />
In 2 modi diversi:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">assert &lt;boolean expression&gt;;<br />
assert &lt;boolean expression&gt;: &lt;message expression&gt;;</div></td></tr></tbody></table></div>
<p>Se ad esempio, in una nostra classe stiamo calcolando la velocità come spazio/tempo, potremmo scrivere:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">assert spazio &gt; 0;<br />
assert tempo &gt; 0: &quot;Il tempo non è un numero positivo!&quot; + tempo;</div></td></tr></tbody></table></div>
<p><strong>Come si abilitano?</strong><br />
Per default le asserzioni sono disabilitate.<br />
Bisogna quindi esplicitamente abilitarle. Ecco come fare:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&gt;java -ea &lt;classe da eseguire&gt;&lt;/classe&gt;</div></td></tr></tbody></table></div>
<p>In questo modo abilitiamo l&#8217;uso delle asserzioni nella nostra classe e in tutte le sue dipendenze, ma non nelle classi di sistema (quelle caricate direttamente dalla JVM). Per abilitare anche quelle ci tocca scrivere:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&gt;java -esa</div></td></tr></tbody></table></div>
<p>L&#8217;errore più clamoroso che si possa commettere nell&#8217;uso di una</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">assert</div></td></tr></tbody></table></div>
<p>è quello di confonderla con la gestione delle eccezzioni!</p>
<div id="artCorr">
            <h4>Articoli correlati</h4>
        <ol>
	    	    <li><a href="http://www.alessandrostella.it/programmazione/2010/04/java-anonymous-classes/" rel="bookmark">Java, anonymous classes (classi anonime)</a><!-- (11.2)--></li>
	    	    <li><a href="http://www.alessandrostella.it/programmazione/2010/02/java-1-6-nested-type-e-inner-classes/" rel="bookmark">Java 1.6, nested type e inner classes</a><!-- (8.4)--></li>
	    	    <li><a href="http://www.alessandrostella.it/programmazione/2010/04/java-ciclo-di-vita-degli-oggetti-garbage-collection/" rel="bookmark">Java, ciclo di vita degli oggetti e garbage collection</a><!-- (8)--></li>
	            </ol>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.alessandrostella.it/programmazione/2009/11/java-e-le-asserzioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

