首页 > 解决方案 > 异常不是通过函数抛出而是直接捕获的

问题描述

我有一个函数Overwrite当对象被用户锁定时抛出异常。

现在,我的代码是

 public class MyObject<T>
{
    //...other methods,...
    public void Overwrite(T value)
    {
        if (IsLocked)
            throw new Exception("You cannot touch the data you don't own");
        this.Value = value;
        OnUpdate?.Invoke(value);
    }
}

我在我的代码中使用了几个 MyObject,当IsLocked设置为 true 时,我的异常被 IDE 在Overwrite方法中直接捕获。所以,我看不到错误来自哪里(我的意思是,我可以找到对Overwrite的错误调用的行。

见下文 :在此处输入图像描述

我想要我的例外是当我调用 MyObject.Overwrite() 时,我可以看到故障线(和故障对象)。

我已经尝试了几种技术,比如 try-catch-throw,......但没有一个奏效。

顺便说一句,这是我第一次在 CSharp 中创建异常,通常我过去捕获的所有异常都在故障线路上未处理......

编辑:我期待更多这样的东西: 在此处输入图像描述

标签: c#exceptionexception-handlingunhandled-exception

解决方案


尝试使用调用堆栈窗口。您可以通过 Debug > Windows > Call Stack 打开它

调用栈


推荐阅读