异常不是通过函数抛出,而是直接捕获

时间:2018-11-15 16:41:42

标签: c# exception exception-handling unhandled-exception

我有一个 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 的错误调用。

请参见下文:enter image description here

我想让异常发生的地方是当我调用MyObject.Overwrite()时,然后可以看到错误的行(和错误的对象)。

我尝试了多种技术,例如try-catch-throw,...但是没有用。

顺便说一句,这是我第一次在CSharp中创建一个异常,通常我过去捕获的所有异常都在错误的行中未得到处理...

编辑:我希望有更多类似这样的内容: enter image description here

1 个答案:

答案 0 :(得分:0)

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

打开它

call stack