<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Desafio da Semana #4</title><link>http://blogs.technet.com/b/latam/archive/2006/05/12/desafio-da-semana-4.aspx</link><description>DESAFIO DA SEMANA #4 
 
 
 Por: Roberto Alexis Farah 
 
 Oi pessoal! Essa semana um amigo me enviou um código em C# e questionou o comportamento do código, pois ele achou o comportamento incorreto. Achei o problema bem interessante e resolvi publicá</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: DESAFIO DA SEMANA #4</title><link>http://blogs.technet.com/b/latam/archive/2006/05/12/desafio-da-semana-4.aspx#429483</link><pubDate>Sat, 20 May 2006 02:46:34 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:429483</guid><dc:creator>Roberto Farah</dc:creator><description>Marcelo, parab&amp;#233;ns pela resposta! Adorei! E sua explica&amp;#231;&amp;#227;o foi bem did&amp;#225;tica.&lt;br&gt;Estou publicando o artigo de resposta.&lt;br&gt;Continue postando e compartilhando conhecimento com os demais! :)&lt;br&gt;&lt;br&gt;Obrigado&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=429483" width="1" height="1"&gt;</description></item><item><title>re: DESAFIO DA SEMANA #4</title><link>http://blogs.technet.com/b/latam/archive/2006/05/12/desafio-da-semana-4.aspx#428335</link><pubDate>Tue, 16 May 2006 00:30:14 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:428335</guid><dc:creator>Marcelo Cortes</dc:creator><description>Sintoma:&lt;br&gt;&lt;br&gt;Na verdade o valor de &amp;quot;a&amp;quot; eh alterado como esperado. Mas a funcao makeStrangeStuff() retorna &amp;quot;a&amp;quot; antes do seu valor ser alterado pelo bloco finally.&lt;br&gt;&lt;br&gt;O problema, na verdade, eh que a funcao retorna dentro do bloco Try. Como dentro do bloco try, nenhuma excessao ocorre, o retorno da funcao eh &amp;quot;a&amp;quot;. Apos o retorno, o bloco try eh finalizado e o bloco finally eh executado e o valor do membro estatico &amp;quot;a&amp;quot; eh finalmente alterado.&lt;br&gt;&lt;br&gt;Para resolver esse problema basta usar single-return point funcations.&lt;br&gt;&lt;br&gt;public static String makeStrangeStuff()&lt;br&gt;{&lt;br&gt; &amp;nbsp; string ret = a;&lt;br&gt;&lt;br&gt; &amp;nbsp; a = &amp;quot;Anomaly&amp;quot;;&lt;br&gt; &amp;nbsp; try&lt;br&gt; &amp;nbsp; {&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ret = a; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; }&lt;br&gt; &amp;nbsp; finally&lt;br&gt; &amp;nbsp; {&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;a = &amp;quot;Greater Anomaly&amp;quot;;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ret = a;&lt;br&gt; &amp;nbsp; }&lt;br&gt; &amp;nbsp; return ret;&lt;br&gt;}&lt;br&gt;&lt;br&gt;Nesse caso nao faz muito sentido, mas se a funcao fosse mais complicada e o valor de &amp;quot;a&amp;quot; fosse alterado varias vezes dentro da funcao onde excessoes pudessem ocorrer, faria sentido.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=428335" width="1" height="1"&gt;</description></item></channel></rss>