0

.NET Windows フォームCurrencyManagerは、移動中にスローされる例外を飲み込みます ( MSDN Social の「CurrencyManager.OnPositionChanged のバグ - 例外を食べる」を参照してください)。

ただし、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
}

現時点では、古いアイテムの保存に失敗した場合、ユーザーはフィードバックを受け取りません。したがって、例外を取得する方法が必要です。

乾杯マティアス

4

1 に答える 1

1

あなたはそれを介してそれをフェッチしようとすることができます: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");
        }
    }
}
于 2011-06-24T08:57:56.107 に答える