Исключение не выбрасывается через функцию, но напрямую ловится - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть функция Перезаписать , которая выдает исключение, когда объект заблокирован пользователем.

На данный момент мой код

 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 .Итак, я не могу понять, откуда возникла ошибка (я имею в виду строку, где я могу найти ошибочный вызов Перезаписать .

См. Ниже: enter image description here

Где я хочу, чтобы мое исключение происходило, когда я вызываю MyObject.Overwrite (), тогда я вижу неисправную строку (и неисправный объект).

Я пробовал несколько методов, таких как try-catch-throw, ... но ничего не работает.

Кстати, я впервые создаю исключение в CSharp, и обычно все исключения, с которыми я сталкивался в прошлом, были обработаны на ошибочной линии...

РЕДАКТИРОВАТЬ : Я ожидаю еще что-то вроде этого: enter image description here

1 Ответ

0 голосов
/ 15 ноября 2018

Попробуйте использовать окно Call Stack.Вы можете открыть его через «Отладка»> «Windows»> «Стек вызовов»

call stack

...