Извлечь и проглотить Исключение из CurrencyManager - PullRequest
0 голосов
/ 24 июня 2011

.NET Windows Forms CurrencyManager глотает исключения, возникающие при навигации (см. «Ошибка в CurrencyManager.OnPositionChanged - ест исключения» в MSDN Social ).

Мне, однако, нужно перехватить или извлечь исключение, которое может быть сгенерировано в обработчике события CurrentChanged. Есть ли способ получить это? Подписка BindingComplete и чтение e.Exception не помогают.

bindingSource.MoveLast();
// exception isn't thrown up to here

private void bindingSource_CurrentChanged(object sender, EventArgs e)
{
    // save old, throws exception
}

В данный момент пользователь не получает обратной связи при сбое сохранения старого элемента. Поэтому мне нужен способ получить исключение.

Приветствие Matthias

1 Ответ

1 голос
/ 24 июня 2011

Вы можете попытаться получить его через: AppDomain.CurrentDomain.FirstChanceException

Простой пример кода:

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.FirstChanceException += (s, e) => Console.WriteLine(String.Format("Exception thrown: {0}", e.Exception.GetType()));

            try
            {
                ThrowException();
            }
            catch(InvalidProgramException)
            {
                // mjam mjam
            }

            Console.Read();
        }

        private static void ThrowException()
        {
            throw new InvalidProgramException("broken");
        }
    }
}
...