Application.UnhandledException Event

Occurs when an exception that is raised by Silverlight is not handled.

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)

Syntax

'Declaration
Public Event UnhandledException As EventHandler(Of ApplicationUnhandledExceptionEventArgs)
public event EventHandler<ApplicationUnhandledExceptionEventArgs> UnhandledException
<Application UnhandledException="eventhandler"/>

Remarks

By default, Silverlight will detect and process unhandled exceptions that are raised from any part of the Silverlight application. If you would prefer to perform unhandled exception detection and processing, you can handle the UnhandledException event, which is raised by Application for each thrown exception that is unhandled by application code.

The UnhandledException event handler is passed a ApplicationUnhandledExceptionEventArgs object, which stores a reference to the unhandled exception in its ExceptionObject property. You can use this information to determine whether an exception is recoverable or not.

When you detect and process an unhandled exception and you do not want Silverlight to continue processing it, you have to set the Handled property to true. If you leave the Handled property set to false when exiting the handler, the unmanaged exception handling as registered for the onError event takes place for the unhandled exception. An onError handler can also be handled by managed code, if you marshal the handler.

Examples

The following example shows how to handle and use the UnhandledException event.

Imports System.IO

Partial Public Class App
    Inherits Application

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub Application_Startup(ByVal o As Object, _
        ByVal e As StartupEventArgs) Handles Me.Startup

        Me.RootVisual = New Page()

    End Sub

    Private Sub Application_UnhandledException(ByVal sender As Object, _
        ByVal e As ApplicationUnhandledExceptionEventArgs) Handles Me.UnhandledException

        If TypeOf e.ExceptionObject Is FileNotFoundException Then
            ' Inform the user 

            ' Recover from the error 
            e.Handled = True
            Return
        End If

        ' Exception is unrecoverable so stop the application and allow the 
        ' Silverlight plug-in control to detect and process the exception. 

    End Sub

End Class
using System.IO; // FileNotFoundException
using System.Windows; // Application, StartupEventArgs, ApplicationUnhandledExceptionEventArgs

namespace SilverlightApplication
{
    public partial class App : Application
    {
        public App()
        {
            this.Startup += this.Application_Startup;
            this.UnhandledException += this.Application_UnhandledException;

            InitializeComponent();
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            this.RootVisual = new Page();
        }

        private void Application_UnhandledException(object sender, 
            ApplicationUnhandledExceptionEventArgs e)
        {
            if (e.ExceptionObject is FileNotFoundException)
            {
                // Inform the user

                // Recover from the error
                e.Handled = true;
                return;
            }

            // Exception is unrecoverable so stop the application and allow the 
            // Silverlight plug-in control to detect and process the exception.
        }
    }
}

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.