<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803255</guid>
        <pubDate>Sun, 16 Jan 2011 11:38:13 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803255</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong>, огромное спасибо&#33; Все работает&#33; Лови плюс.<br>
<br>
P.S. в C# есть есть некий оператор, позволяющий узнать, например, что некоторый экземпляр класса Exception является CommunicationException. Точно есть, но что-то не гуглится. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2011-01-16T14:44:32+03:00">16.01.11, 11:44</time></span></span><br>
Как все просто оказывается.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if (ex is CommunicationException)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//...</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Всем спасибо, от try-catch избавился. Вопрос решен.]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803228</guid>
        <pubDate>Sun, 16 Jan 2011 10:51:09 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803228</link>
        <description><![CDATA[Spawn.NET: <strong class='tag-b'>GoldenJoe</strong>, в WPF аналог - System.Windows.Application.DispatcherUnhandledException он экземплярный, а не статичный, как в Winforms, так что в Application.Current будет.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803179</guid>
        <pubDate>Sun, 16 Jan 2011 09:09:34 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803179</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong>, на эту статью уже натыкался. Только для Windows Forms. Я WPF юзаю, там этого нет. А мешать их вместе не рекомендуется. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2011-01-16T09:18:26+00:00">16.01.11, 09:18</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2803005'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GoldenJoe &#064; <time class="tag-quote__quoted-time" datetime="2011-01-15T19:35:13+00:00">15.01.11, 19:35</time></span><div class='quote '>_result = SaveCall(delegate()<br>
{<br>
    _ReturnObject = _testClient.SameMethod1(_argForSameMethod1, 100);<br>
    return true;<br>
});</div></div><br>
Работает, но хотелось бы еще попроще. Создать бы единый обработчик для CommunicationException, было бы очень хорошо (вместо try-catch для КАЖДОГО метода сервиса) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2011-01-16T09:19:15+00:00">16.01.11, 09:19</time></span></span><br>
Или вместо<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2803179'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GoldenJoe &#064; <time class="tag-quote__quoted-time" datetime="2011-01-16T09:09:34+00:00">16.01.11, 09:09</time></span><div class='quote '>_result = SaveCall(delegate()<br>
{<br>
_ReturnObject = _testClient.SameMethod1(_argForSameMethod1, 100);<br>
return true;<br>
});</div></div>]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803063</guid>
        <pubDate>Sat, 15 Jan 2011 21:25:54 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803063</link>
        <description><![CDATA[Spawn.NET: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2803048'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GoldenJoe &#064; <time class="tag-quote__quoted-time" datetime="2011-01-15T20:53:00+00:00">15.01.11, 20:53</time></span><div class='quote '>А вот это уже интересно.</div></div><br>
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.application.threadexception.aspx]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803048</guid>
        <pubDate>Sat, 15 Jan 2011 20:53:00 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803048</link>
        <description><![CDATA[GoldenJoe: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2803041'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>maxim84_ &#064; <time class="tag-quote__quoted-time" datetime="2011-01-15T20:31:09+00:00">15.01.11, 20:31</time></span><div class='quote '>Ну так может и обернуть этот клиент в безопасную обертку?</div></div><br>
То есть создать вспомогательный класс вроде этого<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">public class Helper</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;private ServiceClient Client = new ServiceClient();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public bool Method1()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return Client.Method1();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;catch</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
И так для каждого метода? Тоже не очень красивое решение.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2803011'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Spawn.NET &#064; <time class="tag-quote__quoted-time" datetime="2011-01-15T19:41:02+00:00">15.01.11, 19:41</time></span><div class='quote '>У клиента в классе Application вроде есть система отлова необработанных исключений, лучше её задействовать.</div></div><br>
А вот это уже интересно. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2011-01-15T20:55:56+00:00">15.01.11, 20:55</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2803041'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>maxim84_ &#064; <time class="tag-quote__quoted-time" datetime="2011-01-15T20:31:09+00:00">15.01.11, 20:31</time></span><div class='quote '>всеравно не пойму проблему</div></div><br>
Если повсюду try-catch - уже раздражает. Так еще в блоке catch у меня строк 5 кода, так надо. Получается еще и много повторяющегося кода (вот эти 5 строчек будут повторяться десятки раз, я ж не холлоуворд сервис пишу)]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803041</guid>
        <pubDate>Sat, 15 Jan 2011 20:31:09 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803041</link>
        <description><![CDATA[maxim84_: я вообще не очень пойму проблему...Да, есть какой-то Wcf сервис, методы которого очевидно не безопасные. И есть некий внешний код, который юзает методы сервиса. Ну так может и обернуть этот клиент в безопасную обертку? тогда во внешнем коде не будут мозолить глаза try...catch...Хотя, куда без них )) <br><br>P.S. всеравно не пойму проблему :)]]></description>
        <author>maxim84_</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803011</guid>
        <pubDate>Sat, 15 Jan 2011 19:41:02 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803011</link>
        <description><![CDATA[Spawn.NET: Всё через Try...Catch точно пускать не советую...<br>У клиента в классе Application вроде есть система отлова необработанных исключений, лучше её задействовать.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803005</guid>
        <pubDate>Sat, 15 Jan 2011 19:35:13 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2803005</link>
        <description><![CDATA[GoldenJoe: Как приду домой, попробую это<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">_result = SaveCall(delegate()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;_ReturnObject = _testClient.SameMethod1(_argForSameMethod1, 100);</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">});</div></ol></div></div></div></div><br>
<br>
А просто засунуть весь метод Main/App_Startup в блок try/catch не вариант? Код вроде будет медленнее выполняться, верно?]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802970</guid>
        <pubDate>Sat, 15 Jan 2011 17:51:18 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802970</link>
        <description><![CDATA[maxim84_: Вообще-то это для демонстрации..]]></description>
        <author>maxim84_</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802968</guid>
        <pubDate>Sat, 15 Jan 2011 17:49:13 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802968</link>
        <description><![CDATA[Spawn.NET: А, ну отдельный класс возвращать, тогда да :)]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802959</guid>
        <pubDate>Sat, 15 Jan 2011 17:41:50 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802959</link>
        <description><![CDATA[maxim84_: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>maxim84_, вопрос был про метод с несколькими параметрами разных типов...</div></div> <br>
все тоже самое:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;public class TestData</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public string Name { get; set; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public class TestClass</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public void SameMethod0()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw new Exception();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public TestData SameMethod1(string _arg, int _index)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine(&quot;Call method &#39;SameMethod1&#39;. Arg = {0}, Index={1}&quot;, _arg, _index);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return new TestData() </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name = &quot;From SameMethod&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TestData _ReturnObject = null;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string _argForSameMethod1 = &quot;adsadsa&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_result = SaveCall(delegate()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ReturnObject = _testClient.SameMethod1(_argForSameMethod1, 100);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</div></ol></div></div></div></div>]]></description>
        <author>maxim84_</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802942</guid>
        <pubDate>Sat, 15 Jan 2011 17:08:43 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802942</link>
        <description><![CDATA[Spawn.NET: <strong class='tag-b'>maxim84_</strong>, вопрос был про метод с несколькими параметрами разных типов...]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802919</guid>
        <pubDate>Sat, 15 Jan 2011 16:32:30 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802919</link>
        <description><![CDATA[maxim84_: Можно не плодить, для этого можно использовать анонимный делигат:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static bool SaveCall(Func&#60;bool&#62; _func)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return _func();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (System.Exception ex)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
Вызывать так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TestClass _testClient = new TestClass();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var _result = SaveCall(delegate()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_testClient.SameMethod0();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</div></ol></div></div></div></div>]]></description>
        <author>maxim84_</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802890</guid>
        <pubDate>Sat, 15 Jan 2011 14:32:47 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802890</link>
        <description><![CDATA[Spawn.NET: В зависимости от типов параметров - да, хотя я бы скорее всего передавал бы массив параметров типа object, а там уж разбирался что к чему, чтобы много методов не плодить.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802888</guid>
        <pubDate>Sat, 15 Jan 2011 14:20:34 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802888</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong><br>
Сделал так<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">public static T DoAction&#60;T&#62;(Func&#60;T&#62; action)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return action();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;catch (Exception ex)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//... &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
Если метод сервиса не принимает параметры - все ок.<br>
Я так понял, если все-таки метод принимает параметры, надо наплодить еще DoAction&#39;ов: с Func&lt;T, T&gt; для 1 параметра, с Func&lt;T, T, T&gt; для 2...<br>
Или я не так понял?]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802858</guid>
        <pubDate>Sat, 15 Jan 2011 13:07:09 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802858</link>
        <description><![CDATA[Spawn.NET: <strong class='tag-b'>GoldenJoe</strong>, начни <a class='tag-url' href='http://msdn.microsoft.com/en-us/library/twcad0zb(v=vs.80).aspx' target='_blank'>отсюда</a> и далее по ссылкам.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802856</guid>
        <pubDate>Sat, 15 Jan 2011 13:05:05 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802856</link>
        <description><![CDATA[GoldenJoe: Наиболее подходящий перегруженный метод для &#39;[неважно].App.DoAction&lt;bool&gt;(System.Func&lt;bool&gt;)&#39; имеет несколько недопустимых аргументов. Подучить мне надо шарп видимо.]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802855</guid>
        <pubDate>Sat, 15 Jan 2011 13:04:44 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802855</link>
        <description><![CDATA[Spawn.NET: <strong class='tag-b'>GoldenJoe</strong>, без возвращаемого типа (ну, или с типом void) - Action&lt;T1,T2,...,TN&gt;, где TN - типы параметров. С возвращаемым типом - Func, где последний T - возвращаемый тип, все предшествующие - типы параметров.<br>
Action и Func это всего лишь делегаты, которые можешь насоздавать сам, если, например, потребуется больше 4-х параметров в Action или Func.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802850</guid>
        <pubDate>Sat, 15 Jan 2011 12:45:43 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802850</link>
        <description><![CDATA[maxim84_: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Такая ошибка возникает, когда я вызываю App.DoAction(Client.SomeMethod([параметры]));</div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">App.DoAction&#60;T&#62;(Client.SomeMethod([параметры]));</div></ol></div></div></div></div><br>
<br>
где T возвращаемый тип]]></description>
        <author>maxim84_</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802831</guid>
        <pubDate>Sat, 15 Jan 2011 11:37:21 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802831</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong><br>
Невозможно получить аргумент типа для метода &#39;[имя проекта].App.DoAction&lt;T&gt;(System.Func&lt;T&gt;)&#39; из данных использования. Попробуйте указать аргументы типа явным образом.<br>
(класс называется App, ибо WPF, а не WinForms) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2011-01-15T11:38:55+00:00">15.01.11, 11:38</time></span></span><br>
Такая ошибка возникает, когда я вызываю App.DoAction(Client.SomeMethod([параметры]));]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802670</guid>
        <pubDate>Fri, 14 Jan 2011 19:31:44 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802670</link>
        <description><![CDATA[Spawn.NET: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=323232&view=findpost&p=2802667'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GoldenJoe &#064; <time class="tag-quote__quoted-time" datetime="2011-01-14T19:27:13+00:00">14.01.11, 19:27</time></span><div class='quote '>Один минус только - придется реализовывать DoAction в каждом классе (ведь я вызываю методы сервиса не только в Main).</div></div><br>
сделай static метод и вызывай откуда угодно<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">public class Program</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public static T DoAction&#60;T&#62;(Func&#60;T&#62; act)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return act();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">public class Program2</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private void Test()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Program.DoAction&#60;bool&#62;( ... );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802667</guid>
        <pubDate>Fri, 14 Jan 2011 19:27:13 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802667</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong><br>
Про generic не знал, спасибо (в шарпе новичек же).<br>
Один минус только - придется реализовывать DoAction в каждом классе (ведь я вызываю методы сервиса не только в Main).]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802662</guid>
        <pubDate>Fri, 14 Jan 2011 19:18:57 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802662</link>
        <description><![CDATA[Spawn.NET: <strong class='tag-b'>GoldenJoe</strong>, Generic в &quot;зубы&quot;.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;private T DoAction&#60;T&#62;(Func&#60;T&#62; act)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return act();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802619</guid>
        <pubDate>Fri, 14 Jan 2011 18:00:18 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802619</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong><br>
Тоже не вариант. Не все же методы сервиса имеют тип void. А для каждого типа делать свой DoAction - еще хуже, чем куча try-catch.]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802600</guid>
        <pubDate>Fri, 14 Jan 2011 17:24:43 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802600</link>
        <description><![CDATA[Spawn.NET: То ли я чего-то не понял, то ли одно из двух...<br>
Чем тебе не по нутру вспомогательный метод, через который можно будет пропускать все методы, аля<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">public void DoAction(Action act)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;act();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;catch {}</div><div class="code_line">}</div></ol></div></div></div></div><br>
В статье красиво написаны подобные &quot;помощники&quot;.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802553</guid>
        <pubDate>Fri, 14 Jan 2011 15:50:32 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2802553</link>
        <description><![CDATA[GoldenJoe: <strong class='tag-b'>Spawn.NET</strong><br>
Так и знал, что мне кинут именно эту ссылку. Это не то. В статье написано о том, как в клиенте обрабатывать ошибки, возникающие на сервере. А  мне всего-то надо, чтобы клиент не падал с ошибкой, если по каким-то причинам не удалось подключиться к серверу. Как вариант - вызывать все методы сервиса в отдельных блоках try-catch. Но, повторюсь, если методов много, код получается некрасивый (одни try-catch). Других вариантов нет?]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2801899</guid>
        <pubDate>Thu, 13 Jan 2011 21:02:04 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2801899</link>
        <description><![CDATA[Spawn.NET: Читай про обработку ошибок в WCF, например, <a class='tag-url' href='http://www.rsdn.ru/article/dotnet/FaultsWCF.xml' target='_blank'>тут</a>.]]></description>
        <author>Spawn.NET</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2801838</guid>
        <pubDate>Thu, 13 Jan 2011 19:43:18 +0000</pubDate>
        <title>WCF клиент: обработка исключений</title>
        <link>https://forum.sources.ru/index.php?showtopic=323232&amp;view=findpost&amp;p=2801838</link>
        <description><![CDATA[GoldenJoe: Здравствуйте. Я начал учить C# и WCF неделю назад, отсюда такие глупые вопросы:<br>
Предположим, есть некий WCF сервис<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;[ServiceContract]</div><div class="code_line">&nbsp;&nbsp; &nbsp;public interface IService</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;[OperationContract]</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;void Method1();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;[OperationContract]</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//...</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
и клиент этого сервиса<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void Main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;ServiceClient Client = new ServiceClient();</div><div class="code_line">&nbsp;&nbsp; &nbsp;//...</div><div class="code_line">}</div></ol></div></div></div></div><br>
Во избежание вылетов вызываю методы в блоке try<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">try</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Client.Method1();</div><div class="code_line">}</div><div class="code_line">catch(Exception ex)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Client.Abort();</div><div class="code_line">&nbsp;&nbsp; &nbsp;MessageBox.Show(ex.ToString());</div><div class="code_line">&nbsp;&nbsp; &nbsp;Application.Current.Shutdown();</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Если метод всего 1, блоки try-catch глаза не мозолят. А если их много (Client.Method1(), Client.Method2(), Client.Method3()...) и вызывать каждый в отдельном блоке try-catch, код выглядит просто ужасно. Можно выкинуть эти try-catch, но тогда клиент будет падать, если сервер &quot;временно недоступен&quot; или просто-напросто на компьютере клиента отсутствует подключение к интернету.<br>
То есть, если вызывать каждый метод в отдельном try-catch, получается стабильный, но ужасно НЕКРАСИВЫЙ код. А если без try-catch, соответственно красивый, но НЕСТАБИЛЬНЫЙ.<br>
Возможно ли избавиться от try-catch и не потерять стабильность?]]></description>
        <author>GoldenJoe</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      </channel>
      </rss>
	