title: Why do exceptions propogate out of an event handler?
body: <p>Consider the following program. How is the behaviour that it displays (namely that exceptions will propagate out of an event handler) a "good thing"? As far as I can tell, it could only ever be bad; unexpected exceptions popping up from functions that they shouldn't. In my particular case, it was killing threads. So, is this behaviour actually a good thing in some cases? Is this a reason to say that letting exceptions out of event-handlers is poor design?</p>
  
  <pre><code>static class Program {
      static void Main()
      {
          Foo foo = new Foo();
          foo.SomeEvent += ThrowException;
  
          try 
          {
              foo.OnSomeEvent();
          } 
          catch (Exception) 
          {
              // This is printed out
              Console.WriteLine("Exception caught!");
          }
      }
  
      static void ThrowException(object sender, EventArgs e)
      {
          throw new Exception();
      }
  }
  
  // Define other methods and classes here
  class Foo 
  {
      public event EventHandler SomeEvent;
  
      public void OnSomeEvent()
      {
          SomeEvent(this, EventArgs.Empty);
      }
  }
  </code></pre>