如何处理委托目标中发生的异常

时间:2010-08-23 12:42:00

标签: c# .net

我有一个代表指向3种不同的方法。这些方法将添加到其调用列表中。

什么是第二种方法抛出异常???我仍然需要执行第三种方法。

我认为一个替代方案是下面提到的代码

         public delegate void MethodHandler();
            A oa = new A();
            B ob = new B();
            C oc = new C();
            D od = new D();


            MethodHandler M = oa.TestM;
            M += ob.TestM;
            M += oc.TestM;
            M += od.TestM;

            foreach (Delegate item in M.GetInvocationList())
            {
                try
                {
                    item.DynamicInvoke(null);
                }
                catch
                {
                }

            }

还有其他方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:0)

您无法使用try / catch模式在 not 的意义上“避免”这种情况,以确保您的代码通过委托这引起了例外。

尽管如此,没有什么可以阻止您编写自己的类来包装此功能 - 在您使用M代理的任何地方减少此精确代码的潜在扩散。

顺便说一句,我相信你可以改变这一行:

item.DynamicInvoke(null);

到此(避免DynamicInvoke):

MethodHandler handler = (MethodHandler)item;
handler.Invoke();