代码之家  ›  专栏  ›  技术社区  ›  JohnIdol

有没有办法捕获给定类抛出的所有未处理异常?

  •  3
  • JohnIdol  · 技术社区  · 14 年前

    我知道怎么抓 all unhandled exceptions 在给定的线程中,但是想知道是否有一种方法可以捕获所有未处理的异常

    如果没有办法做到这一点(很可能是这样),你会如何达到同样的效果?

    谢谢你的帮助。

    6 回复  |  直到 7 年前
        1
  •  6
  •   Johann Blais    14 年前

    如果是关于WCF异常,我建议将专用行为插入WCF管道。我写了一个详细的例子 here

    它基于IErrorHandler和IServiceBehavior两个接口,也可用作属性和基于文件的配置。

        2
  •  3
  •   Sean B    7 年前

    而且,没有理由将所有调用都包装在try/catch中。在不了解代码的情况下,这样做很可能是不对的。异常处理使您不必在本地处理每个错误。接受它,你的代码就会简单得多。

        3
  •  2
  •   Community Nick Bolton    7 年前

    根据您对@Brians的评论,回答:

    我需要捕获(wcf)服务代理中的错误异常,以便获得有意义的描述

    再扔给上层的人,他们认为合适就可以处理

    或者你可以用 IErrorHandler interface ( MSDN doco here ).

        4
  •  0
  •   EFrank    14 年前

    为了实现您想要做的事情,一件事是创建一个包装类,该类调用原始类并捕获所有异常。然后在原始类中,可以使用包装器类,而不必每次都编写try-catch块。

        5
  •  0
  •   Archeg    14 年前

    例如,您可以使用企业库并编写自定义异常处理程序,例如,它将处理所有异常(或仅处理其中的一部分)并记录它们或编写用户友好的消息。但我认为只有当您想要实现日志记录或某些数据回退(还原)时,才应该使用这种方法。而且您应该始终将它们重定向到UI层,该层应该显示用户友好的消息。

    企业库和类似的工具制作包装器,正如EFrank建议的那样,但是它们是自动生成的,而且这些包装器是透明的,所以您只需调用类的方法,甚至不知道您正在使用代理。

    而且企业库支持WCF,所以我认为,这应该是您的选择

        6
  •  -1
  •   msbyuva    11 年前

    尝试ELMAH它将处理任何未处理的异常 https://code.google.com/p/elmah/