gpt4 book ai didi

c# - 在函数参数中捕获异常

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:31 26 4
gpt4 key购买 nike

我正在我的 .NET 应用程序中测试异常处理。使用下面的代码,我可以记录所有异常,但我不知道如何捕获它们,所以它们不会停止我的应用程序。这是我正在使用的代码:

public class ExceptionHandler

{
public ExceptionHandler()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.FirstChanceException += MyHandler2;

}

private void MyHandler2(object sender, FirstChanceExceptionEventArgs e)
{
try
{
throw e.Exception;
//this ends up in eternal loop with 'stack overflow'
}
catch (Exception exception)
{
//exception never comes here, but if the exception is
//not caught inside catch block, then it's unhandled and it stops application
}
}

}

那么,我怎样才能在 MyHandler2 中捕获异常 e 呢?不能只用catch,必须try-catch ...

最佳答案

当然,这还没有涉及到 catch 子句。无意中,您创建了一个递归:

  1. 第一次机会异常发生在您的程序中的某处。
  2. 正在触发您的处理程序。
  3. 您的处理程序中存在第一次机会异常,糟糕!最好转到我的异常处理程序!
  4. 正在触发您的处理程序。
  5. 您的处理程序中存在第一次机会异常,糟糕!最好转到我的异常处理程序!
  6. 正在触发您的处理程序。
  7. 您的处理程序中存在第一次机会异常,糟糕!最好转到我的异常处理程序!
  8. 正在触发您的处理程序。
  9. 您的处理程序中存在第一次机会异常,糟糕!最好转到我的异常处理程序!
    ...

还有你的堆栈溢出...

正如@Marc Gravell 在他的回答中指出的那样,此事件不用于处理异常。异常应该在本地处理。
看看this SO thread了解更多详情。

关于c# - 在函数参数中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com