title: Debugger stepping into if() block where condition is false
body: <p>Given this gem of code:</p>
  
  <pre><code>class Program
  {
      private static bool IsAdmin = true;
  
      static void  Main(string[] args)
      {
          if (!IsAdmin)
          {
              throw new Exception();
          }
  
          try
          {
              var x = 2342342;
              var y = 123132;
          }
          catch (Exception)
          {
              throw;
          }
      }
  }
  </code></pre>
  
  <p>Given the <code>this.IsAdmin</code> yields true - I would expect the debugger to not enter that if statement. In reality it does - and it steps over the throw but does not actually throw!</p>
  
  <p>Now this only happens when you have an exception inside an if statement followed by a try/catch block, on Visual Studio 2013, targeting .NET Framework 4, 64 bit, "Prefer 32 bit" unchecked. </p>
  
  <p>I have confirmed this oddity with colleagues on different machines. Step though the following code and the debugger will seem to step into the if branch, but no exception is thrown:</p>
  
  <p><img src="https://i.stack.imgur.com/mJoPP.png" alt="enter image description here"></p>
  
  <p>I am in debug mode, I have tried compiling and cleaning the project multiple times.</p>
  
  <p>Can anyone explain why this is happening?</p>