title: Best way to catch a WCF exception in Silverlight?
body: <p>I have a Silverlight 2 application that is consuming a WCF service.  As such, it uses asynchronous callbacks for all the calls to the methods of the service.  If the service is not running, or it crashes, or the network goes down, etc before or during one of these calls, an exception is generated as you would expect.  The problem is, I don't know how to catch this exception.</p>
  
  <ul>
  <li><p>Because it is an asynchronous call, I can't wrap my begin call with a try/catch block and have it pick up an exception that happens after the program has moved on from that point.</p></li>
  <li><p>Because the service proxy is automatically generated, I can't put a try/catch block on each and every generated function that calls EndInvoke (where the exception actually shows up).  These generated functions are also surrounded by External Code in the call stack, so there's nowhere else in the stack to put a try/catch either.</p></li>
  <li><p>I can't put the try/catch in my callback functions, because the exception occurs before they would get called.</p></li>
  <li><p>There is an Application_UnhandledException function in my App.xaml.cs, which captures all unhandled exceptions.  I could use this, but it seems like a messy way to do it.  I'd rather reserve this function for the truly unexpected errors (aka bugs) and not end up with code in this function for every circumstance I'd like to deal with in a specific way.</p></li>
  </ul>
  
  <p>Am I missing an obvious solution?  Or am I stuck using Application_UnhandledException?</p>
  
  <p>[Edit]<br>
  As mentioned below, the Error property is exactly what I was looking for.  What is throwing me for a loop is that the fact that the exception is thrown and appears to be uncaught, yet execution is able to continue.  It triggers the Application_UnhandledException event and causes VS2008 to break execution, but continuing in the debugger allows execution to continue.  It's not really a problem, it just seems odd.</p>