2011-06-24 12 views
0

.NET WindowsフォームCurrencyManagerは、ナビゲート中にスローされる例外を取り除きます("Bug in CurrencyManager.OnPositionChanged - eats exceptions" on MSDN Social参照)。スローされ、取り込まれた例外をCurrencyManagerから取得します

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

現時点では、古いアイテムの保存に失敗した場合、ユーザーはフィードバックを得ません。したがって、私は例外を取得する方法が必要です。あなたはそれを通じフェッチしようとすることができ

乾杯 マティアス

答えて

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"); 
     } 
    } 
} 
+0

おかげで、仕事をしていません。 'WrappedException'クラスで例外をラップして、必要な例外とドメイン内でスローされた例外(' is'演算子)を区別しました。 –

関連する問題