title: Better handling of exceptions occurring in methods connecting to internet
body: <p>I have lots of methods which connects to internet to get something. So I need to handle the <code>WebException</code>s which can occur. But I would like to reduce try catch blocks in my code which uses these methods, because it looks ugly and difficult to look. What I'm doing right now is return a <code>Tuple</code> with an <code>enum</code> which I can use to see if the method failed or succeeded etc. Then I use a <code>switch</code> and <code>case</code> blocks to handle it. For example:</p>
  
  <pre><code>Tuple&lt;GetIpReturn, string&gt; ip = await _user.GetIp();
  GetIpLocksReturn returnValue = ip.Item1;
  switch (returnValue) {
      case GetIpLocksReturn.InternetError:
          // WebException occured
          break;
      case GetIpLocksReturn.AuthError:
          //
          break;
      case GetIpLocksReturn.Success:
          // Use ip.Item2 (The ip string)
          break;
  }
  </code></pre>
  
  <p>But this also looks messy with those break statements.<br>
  Usually the error cases will have very few lines of code. Is there a better way of doing this? (Maybe using delegates?)</p>