上海建网站计划,成功的个人网站,网站注册域名查询,网站建设教案好像是在csdn上看见的一个问题。 如下 现有A() B() C() 。。。。等很多个方法 但是他担心程序按 try { A(); B();//如这里抛异常 C()将不执行。 C(); //..... } catch (Exception e) …好像是在csdn上看见的一个问题。 如下 现有A() B() C() 。。。。等很多个方法 但是他担心程序按 try { A(); B();//如这里抛异常 C()将不执行。 C(); //..... } catch (Exception e) { // } 执行时如果遇到某个方法抛出异常后面的方法不执行了。 他想怎么样呢1.异常必须要捕获但不一定要处理。2.某处抛出异常后后面的方法继续执行。 如何解决我看完了整个回帖都是用最笨的办法其实我觉得还有其他办法可以解决。总结下。正好我想把不同声明的方法放在一个委托数组里看看能不能读出来分别执行数组里面的方法。 最开始的问题 把能想到的方法列一遍 第一种方法利用try{}finally{} try { try { A(); } finally { try { B(); } finally { try { C(); } finally { } } } } catch (Exception e) { MessageBox.Show(e.Message); } 第二种方法利用多播委托 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms; namespace bfm{ public partial class Test : Form { delegate void dg(); public Test() { InitializeComponent(); Begin(); } public void Begin() { dg de A; de B; de C; //Delegate 别错写成delegate Delegate[] delegateArray de.GetInvocationList(); foreach (dg d in delegateArray) { try { //d.Invoke(); d(); } catch (Exception e) { MessageBox.Show(d.Method.ToString()); } } } public static void A() { int a 0; int b 10 / a; } public static void B() { int a 0; int b 10 / a; } public static void C() { int a 0; int b 10 / a; } }} 第三种用多线程 为每个方法开一个线程。 我测试了下 如下 try { Thread one new Thread(A); one.Start(); } catch (Exception e) { MessageBox.Show(e.Message); } 上面这样不能捕获到方法内部的错误 只能捕获线程抛得一些异常。在每个方法里捕获异常想想也对 既然A B C 这三个方法怀疑有异常抛出。为什么不在方法里面捕获异常呢 ------------------------------------------------------------------------------------------------------------------------------------- 由此想到的问题 如果用多播委托 则每个方法的声明格式都是一样的 委托的协变和抗变 这里就不说了那如果方法是 void A(){...} void B(int size){...} int C(){.....} 这时多播就有点鞭长莫及了。如何解决呢 将不同委托类型的委托实例放在Delegate[]数组中后 在不知情的情况下 又怎么使用呢转载于:https://www.cnblogs.com/yueliang/archive/2010/04/19/1715714.html