Usando Blend ho notato una "piccola" differenza di comportamento tra WPF e le applicazioni Winform in presenza di eccezione non gestita.
Immaginiamo di avere un Windows Form con un pulsante con al suo interno associato a questo questo codice:.

   1:  private void button1_Click (object sender, EventArgs e)
   2:     {
   3:      int[] data = new int[2];
   4:      data[3] = 42;
   5:     }
 

Compilando e lanciando l'eseguibile otterremo la solita finestra che tutti conosciamo:

image


 

 

 

 

Facciamo la stessa cosa con un applicazione WPF, ecco cosa appare... smile_confused la cosa diverte è che MSDN indica che in questi casi dovrebbe accadere questo: "By default, Windows Presentation Foundation (WPF) catches unhandled exceptions, notifies users of the exception from a dialog box (from which they can report the exception), and automatically shuts down an application".

image

 

Onde evitare "brutte figure" è quindi consigliabile, oltre ad una corretta gestione e prevenzione delle eccezioni, implementare un gestore globale delle eccezioni agendo sul file App.Xaml e relativo codebehind.
Use esempio è indicato di seguito.

 
 
 
 
   1:  <Application
   2:    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:    x:Class="VariousTest.App"
   5:    StartupUri="Window1.xaml" DispatcherUnhandledException="OnAppException" >    
   6:  </Application>
 
.
   1:  public partial class App: System.Windows.Application
   2:    {
   3:      void OnAppException (object sender, DispatcherUnhandledExceptionEventArgs e)
   4:      {
   5:       MessageBox.Show(e.Exception.Message);
   6:       e.Handled = true;
   7:      }
   8:    }