捕获处理的异常 - c#

嘿:)
有什么办法可以全局捕获已处理的异常吗?我知道我们可以使用“ AppDomain.CurrentDomain.UnhandledException”和“ Application.ThreadException”捕获未处理的异常,但是我想对已经捕获的异常进行一些处理(例如写入日志等)

谢谢

参考方案

通常,您可能希望在代码的最低级别捕获异常。相对于异常发生的地方,他们越近,您越有机会解决导致他们的问题的机会越大。

如果您无法在此级别上采取任何纠正措施来解决导致异常的问题,那么您根本不应该对其进行处理。只需让异常冒出气泡,然后根据需要全局处理即可。

话虽如此,如果您已经在较低级别上处理了异常,那么您将能够在较高级别上捕获该异常的唯一方法是,如果您从较低级别的Catch块中rethrow it因此,例如:

try
{
   //your code
}
catch (SomeException e)
{
   //take any relevant handling measures

   //rethrow the exception
   throw; 
}

当然,从技术上讲,这意味着较低级别的Try / Catch块无法处理该异常,但这是在更高级别捕获任何内容的唯一方法。

有关重新抛出异常的更多信息,请参见:

Why Re-throw Exceptions?
http://weblogs.asp.net/fmarguerie/archive/2008/01/02/rethrowing-exceptions-and-preserving-the-full-call-stack-trace.aspx
http://msdn.microsoft.com/en-us/library/xhcbs8fz.aspx

为什么不在生产中启用Symfony调试工具? - php

我经常发现将php错误转换为将回调注册到set_error_handler和register_shutdown_function的异常非常有用,因此我决定尝试一些更可靠的解决方案,即Symfony Debug组件。但是,它们在introduction page中警告: 您永远不要在生产环境中启用调试工具,因为它们可能会向用户泄露敏感信息。启用调试组件基本上意…

在屏幕上打印错误,但继续执行代码 - python

我有一些代码可以通过一系列URL进行迭代。如果由于其中一个URL不包含有效的JSON正文而导致我的代码中出现错误,我希望将生成的错误打印到屏幕上,然后将代码移至下一个迭代。我的代码的简单版本是:for a in myurls: try: #mycode except Exception as exc: print traceback.format_exc()…

catch与catch和throwth异常之间的区别? - java

我们可以通过try-catch或throw引发异常方案1:public void testMethod() throws MyException { throw new MyException(); } 方案2:public void testMethod() throws MyException { try { throw new MyException(…

Java-NoSuchMethodError没有被异常捕获 - java

我的印象是,Exception非常适合捕获所有可能的异常,因为每个异常都具有Exception作为基类。然后,在开发Android应用程序时,我使用了以下方法,该方法在某些自定义ROM中已被删除。boolean result = false; try{ result = Settings.canDrawOverlays(context); } catch(E…

使用JQuery处理PHP异常 - php

我正在使用JQuery调用PHP函数,该函数将在成功时返回JSON字符串或引发一些异常。当前,我在响应上调用jQuery.parseJSON(),如果失败,则假定响应包含异常字符串。$ .ajax({ 输入:“ POST”, 网址:“ something.php”, 成功:功能(响应){ 尝试{ var json = jQuery.parseJSON(res…