最近在写代码时,很多的代码需要用Try...catch...来进行捕获异常进行处理。感觉特别麻烦,try...catch...的方法到处copy
后来发现有个人利用Attribute属性来进行处理异常,我没想明白他是怎么实现的。
例子:[MyErrorLog(...)]
public void TestMessage()
{
   throw new Exception("DDDD");
}异常信息的捕获通过MyErrorLog来进行捕获。
请问这样的东西应该利用什么技术实现!

解决方案 »

  1.   

    Try...catch...到处用是不好的。。
      

  2.   

    Attribute只是一个标记,不会提供任何功能,必须配合反射使用。
    lz的想法不错,可以通过AOP实现。
      

  3.   

    不要用attribute,它好像是反射的,效率值得怀疑,然后你怎么调试错误呢?
      

  4.   

    个人不成熟的做饭,等待高手。
    异常统一处理比较好,自定义个异常基类,分类继承,分类保存。
    winform有个ThreadException 可以统一捕获未处理的异常,在此进行分类处理。
    Application.ThreadException +=new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
      private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
            {
                BusinessException be = e.Exception as BusinessException;
                if (be != null)
                {
                    MessageBox.Show(e.Exception.Message.ToString());
                }
                            
            } 
      

  5.   

    我习惯于在程序的最外层套一个try catch,里面的都不用管。
      

  6.   

    个人感觉:
    如果是在程序的最外面添加TRY...CATCH...来控制异常,比较难发现程序的错误和程序异常发生的原始地方。我习惯在界面层这块进行异常的记录,记录当前运行函数的名称和异常的信息。
    但有个问题是:就是需要不停的拷贝Try...Catch(){ LogErrorMessage("");}
    比较繁琐。所以想偷点懒。嘿嘿嘿
      

  7.   

    现在有个新的想法是:想利用.Net MSbuild来进行自动添加异常功能。例如:
    public void TestMethod()
    {
       int i = 0;
       int j = 1 / i;
    }对.NET 程序进行编译完成后程序代码变成:
    pulic void TestMethod()
    {
       try
       {
          int i = 0;
          int j = 1 / i;   
       }
       catch(Exception ex)
       {
          LogErrorMessage(ex);
       }
    }
      

  8.   

    觉得TRY CATCH还可以,其他的方法现在还没用的到哦,有什么更好的方法大家可以说下啊