none
怎样跨类型捕捉错误 RRS feed

  • 问题

  • 我自己新建了一个类是classA   我在default.aspx的分离的代码文件中用了这个自定义类,这个自定义类发生了错误(例如数据库没打开,或者索引超出范围),我该怎么捕捉。

    换句话说也就是default.aspx的try catch end try结构能找到这个错误。

    自定义类中classA需要创建自己的错误类吗?如果我在clssA中通过try catch end进行了错误处理,错误还能传递到引用他的类里面来吗?

    2009年10月22日 14:24

答案

  • 如果你在ClassA的类中以及捕获异常了 那么页面中不会再出现异常了,不过也有可能因为页面的一些成员依赖于ClassA,而ClassA发生了异常 则有可能导致页面抛出新的异常

    .net自带的异常类已经足够了,如果不是特别需要 不用自己单独另外定义
    查看Exception的类的继承类

    如果ClassA不捕获异常 那么就需要在页面中使用到ClassA的会发生错误的地方捕获,捕获异常时最好精确到异常的类型 比如ArgumentNullException等 而不是笼统的用Exception
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    2009年10月22日 14:40
    版主

全部回复

  • 如果你在ClassA的类中以及捕获异常了 那么页面中不会再出现异常了,不过也有可能因为页面的一些成员依赖于ClassA,而ClassA发生了异常 则有可能导致页面抛出新的异常

    .net自带的异常类已经足够了,如果不是特别需要 不用自己单独另外定义
    查看Exception的类的继承类

    如果ClassA不捕获异常 那么就需要在页面中使用到ClassA的会发生错误的地方捕获,捕获异常时最好精确到异常的类型 比如ArgumentNullException等 而不是笼统的用Exception
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    2009年10月22日 14:40
    版主
  • 非常感谢

    2009年10月22日 16:44
  • 一般是在业务逻辑层异常捕捉程序中封装异常,然后在重新抛出之前把消息信息改为对用户比较有好的信息,或者在错误消息中提示可能的解决方案。设置新异常的InnerException属性以便于调试。
    抛出异常的方式只能跳出一层异常捕捉语句。如果你要传递异常,需要自己写代码。可以像是BackgroundWorker类把工作线程的异常捕捉之后作为参数传递给界面线程那样保存异常信息之后传递。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年10月22日 16:48
    版主