Обработка исключений по методам C #

1

Предположим, что у меня есть следующий код...

try
{
    await Task.Run(() => autobuyandsell.Discard_Players(client, this));
    if (stop == false)
    {
          await Task.Run(() => autobuyandsell.Buy_300_Players(client, this));
    }
}
catch (ExpiredSessionException ex) 
{
    relogin = true;
    b_stop.PerformClick();
 }

Внутри autobuyandsell ExpiredSessionException может возникать, когда я вызываю некоторые методы, которые могут вызывать это исключение. Мой вопрос: мне нужно добавить еще один блок try/catch внутри функции или достаточно для обработки extern Exception?

Ответ принят:

Поскольку единственная необходимость моей программы - выйти из метода и перезапустить некоторые переменные, я решил использовать try/catch вне метода.

  • 3
    Ну, это полностью зависит от того, что вы хотите случиться, если выдается исключение. Вы хотите, чтобы ваши методы Discard_Players и Buy_300_Players (с нетрадиционным названием, кстати) продолжались после исключения? Если это так, вам нужно поймать исключения в этих методах. В противном случае вы можете поймать их в своем коде вызова.
  • 0
    Я прошу прощения за ошибку в названии. Я довольно новичок в этой области, поэтому я постараюсь получить хорошие привычки с самого начала. Возвращаясь к моему вопросу, я хочу выйти из метода, как только получено исключение, поэтому я думаю, что мне нужно оставить только исключение вне метода.
Показать ещё 1 комментарий
Теги:
exception
try-catch

1 ответ

0
Лучший ответ

Вы поймаете их, как только у вас есть это сейчас, но вы не будете "знать", если/сколько из ваших Discard_Players или buy_300_Players выполнено, и в какой момент произошло исключение и т. Discard_Players buy_300_Players может быть плохой идеей.

Например, если эти методы сохраняют состояние на диске/базе данных, вы не будете "знать", если это произошло или нет.

(Я продолжаю использовать кавычки на "знаю", потому что, по-моему, можно было бы допросить стек вызовов и т.д., Когда поймал Исключение, чтобы узнать, где он был поднят, чтобы найти эти вещи, но это будет довольно беспорядочно! )

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

Поэтому в зависимости от функциональности этих двух функций вы должны решить, какой подход лучше всего подходит для ВАШЕГО приложения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню