异常不是通过函数抛出而是直接捕获
Exception not thrown through the function but directly caught
我有一个函数 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.
的错误调用的行
见下文:
我想要异常的地方是当我调用 MyObject.Overwrite() 时,然后我可以看到错误的行(和错误的对象)。
我已经尝试了多种技术,例如 try-catch-throw,...但是 none 有效。
顺便说一句,这是我第一次在 CSharp 中创建异常,通常我过去捕获的所有异常都在错误行未处理...
EDIT :我期待更多这样的东西:
尝试使用调用堆栈window。您可以通过 Debug > Windows > Call Stack
打开它
我有一个函数 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.
的错误调用的行见下文:
我想要异常的地方是当我调用 MyObject.Overwrite() 时,然后我可以看到错误的行(和错误的对象)。
我已经尝试了多种技术,例如 try-catch-throw,...但是 none 有效。
顺便说一句,这是我第一次在 CSharp 中创建异常,通常我过去捕获的所有异常都在错误行未处理...
EDIT :我期待更多这样的东西:
尝试使用调用堆栈window。您可以通过 Debug > Windows > Call Stack
打开它