gpt4 book ai didi

c# - 在 catch block 内运行时检测

转载 作者:太空狗 更新时间:2023-10-29 20:20:24 26 4
gpt4 key购买 nike

如何检测当前正在执行的代码何时从 catch block 中被调用?

void SomeFunction()
{
// how do I detect whether I am being called from within a catch block?
}

编辑:

对于那些提问的人,我想实现一个这样的类,不要在意错误冒泡逻辑:在编写此代码示例时,我遇到编译器错误“在 catch 之外不允许使用不带参数的 throw 语句条款”,这样无论如何都会破坏我的想法。

public class ErrorManager {

public void OnException(Exception ex) {
LogException(ex);
if (IsInsideCatchBlockAlready()) {
// don't destroy the stack trace,
// but do make sure the error gets bubbled up
// through the hierarchy of components
throw;
} else {
// throw the error to make it bubble up
// through the hierarchy of components
throw ex;
}
}

void LogException(Exception ex) {
// Log the exception
}

bool IsInsideCatchBlockAlready() {
// How do I implement this?
}
}

最佳答案

你不知道。没有办法知道如果你抛出一个异常,它会被捕获还是程序崩溃。您可以可能在编译时使用代码分析工具进行猜测,但在代码运行时这不是一个选项。

关于c# - 在 catch block 内运行时检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507965/

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