Excepción de informes de una aplicación WPF

Así que digamos que tengo una excepción no controlada en mi aplicación o se bloquea por alguna razón. ¿Hay alguna forma de capturar la salida y mostrar un cuadro de diálogo de informe de error cuando la aplicación se bloquea?

Lo que estoy pensando es tener un pequeño programa ejecutándose en segundo plano, cuyo único trabajo es escuchar una salida anormal de la aplicación principal y luego mostrar el cuadro de diálogo 'informe' donde el usuario puede elegir enviarme un correo electrónico con la salida del error

No estoy realmente seguro de cómo implementar esto, o si esta es la forma correcta de hacerlo.

Informar el mensaje de error sería una tarea fácil, pero no tengo idea de cómo capturar la salida de una excepción no controlada o tomar los códigos de salida (supongo que el programa daría un código de salida distinto de 0 cuando falla). @

Sería genial tener un empujón en la dirección correcta.