小弟前一段写了一些类库.里面全是用TRY...CATCH....捕获的错误然后把错误MessageBox.show出来。 这样别人在用我类库的时候就比较方面的能看出错误来。可是最近出现个问题,就是使用的类库的人也要在程序中捕获错误以防止程序出现坏死现象。 
         这个时候就出现问题了。我的类库报下错误,然后他的程序再谈出MessageBox显示一下他的错误。有可能出现多次谈出MessageBox的问题。这让用户体验非常的不好。
         所以我想改编下我的类库,让他开发程序的时候显示对话框,程序做好发布后就不弹出了。我设想让他写日志。或者别的方法。
   想听听各位高手的思想。谢谢 。 小弟新手,有不对的地方请高手批评。谢谢 在线等~~~~~~~~~~~~~

解决方案 »

  1.   

    你可以在你的类中设置一个属性,比如Silent,为true的话,捕获异常后不显示消息,为false的话,就Show一个MessageBox。这样,可以由用户代码来控制。
      

  2.   

    你的類庫代碼裡衹拋出異常就行了.....用throw代替catch
      

  3.   

    哎 throw啊 要什么异常就有什么异常
      

  4.   

    恩恩恩 了解 了 我也是慢慢发现了 ~~  弹出对话框是太不科学了  呵呵 ~~    大家一起顶啊  来着有分  不够再加~~~恩 如果THROW的话  调试的时候是不是不方便么  
      

  5.   

    System.Diagnostics.Trace.  如果用到类库里面让他写日志  那他的日志写到那里了?  和他同一个目录么?
      

  6.   

    我的是类库啊 我发现用System.Diagnostics.Trace.  好想是不行啊 他把错误信息显示到那里去了?
     
      

  7.   

    用Debug好像可以
    在调试的时候他就会他出错误信息,而发布之后他就不显示错误信息了。
      

  8.   

    我一直都是DEBUG 状态啊
    貌似不能直接现显示System.Diagnostics.Trace中间的错误啊!!郁闷  看来还是要用一楼的方法啊
      

  9.   

    他开发类库的时候在debug模式,可以用条件编译,开发完成后换成release#if DEBUG
     ...
     MessageBox.Show ...//显示MessageBox窗口
     ...
    #else
     ...
     Log.Write... //记录日志
    #end if
      

  10.   

    设计类库时就是有什么异常抛什么异常
    等到项目中使用类库时,捕获异常,Trace或Show出来,还要判断异常类型,看看是否继续
      

  11.   

    类库中既不应该弹对话框也不应该记录日志...throw即可...怎么处理由调用者自己决定...
      

  12.   

    不要show出来,除非是那种很大的错误,不然都写到log里面吧,反正我一般都这么做
      

  13.   

    类库的话最好throw出来 然后有调用函数来处理这个错误
      

  14.   

    类库时的异常可用throw出来,界面再catch
    也可以返回布尔值,有异常就返回false
      

  15.   

    throw  肯定用这个了,抛出让上层调用的该怎么处理就怎么处理
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  16.   

    throw  肯定用这个了,抛出让上层调用的该怎么处理就怎么处理
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  17.   

    晕,这个专用阅读器还是有点慢,竟然发了两遍
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  18.   

    既然你的组件要被别人调用,那最好是用THROW,
    为了程序健状,建议在程序中加入:
    Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
    这样程序就不会因为一些意外的异常而死掉
      

  19.   

    直接new一个就成了
    throw new Exception();
      

  20.   

    调用类方法的时候通过返回一个整形数来确定是否操作成功,如果错误则通过具体的数字SHOW出类的ErrorMessage属性。
      

  21.   

    可以用delegate,让使用者自己去处理异常.
      

  22.   

    用Debug,如果有必要,可以给Debug的下一句加个中断,慢慢调。在类中直接操作界面会破坏封装
      

  23.   

    继承Exception实现自己的Exception然后有错误就throw
      

  24.   

    1. 在你的每个类库中加入一个你自己的异常类。
    2.该异常类继承Exception类。
    3. 在该异常类中,你将截获你程序中的错误,并编写你自己的错误号,然后将错误号用throw抛出。
    4.别人在调用你的类库时,如果出现错误,则将会得到你自己抛出的错误号;然后将错误号反馈给你,你再自己写单元测试,去调试自己的类库什么情况下会报错。
      

  25.   

    如果编写的是通用类库,在出现问题的时候应该尽量把异常信息传输到调用链的上层,这样有助于发现问题调试程序。强烈不建议在类库中加入MessageBox类来实现错误提示。如果想对类库的设计有一个比较好的提高,请看下面的书,
    NET设计规范:.NET约定、惯用法与模式
    http://product.dangdang.com/product.aspx?product_id=9191696
      

  26.   

    42楼高手啊~~  不过没有做过单元测试啊  不会啊.另外怎么能全部知道自己的错误呢~~   对异常处理了解不够啊  ~~  另外为什么我直接THROW异常 用的时候就会到异常那里  是不是和我用的DEBUG模式有关系呢43楼说的异常信息传输到调用连上层 怎么传 能否给个小代码看看  谢谢