У меня есть следующий код:Изменить улов (COMException в.п.), чтобы поймать (COMException)
try
{
retval = axNTLXRemote.IsUnitPresent(_servers[0].IPAddress, 1, _servers[0].RemotePort, _servers[0].CommFailDelay * 1000);
}
catch (COMException ce)
{
throw ce;
}
Который дает мне предупреждение followig, который я хочу, чтобы избавиться от:
CA2200: Microsoft. Использование: «Connect()» перерисовывает пойманное исключение и явно указывает его как аргумент. Вместо этого используйте «throw» без аргумента, чтобы сохранить местоположение стека, где первоначально было создано исключение.
Я прочитал следующее The difference between try/catch/throw and try/catch(e)/throw e, и я понимаю, что «throw ce; сбросит трассировку стека и заставит ее выглядеть так, как если бы исключение было выбрано из этой функции.
Я хочу просто изменить его на «бросок» вместо «throw ce», который избавится от предупреждения.
Какая разница в следующих уловов:
catch (COMException ce) { throw; }
и
catch (COMException) { throw; }
ли мне нужно только иметь «COMException се», если я хочу, чтобы каким-то образом использовать се переменная?
Кроме того, когда я выполняю 'throw' или 'throw ce', это вызывающая функция, которая будет обрабатывать или поймать ее ?? Я немного не понимаю.
Хороший совет. Лучше совет, чтобы просто избавиться от try/catch, он ничего не полезен. –
Не обязательно верно. Возможно, он хочет выбросить исключения COMException, но по-разному относиться к другим исключениям. Трудно сказать, не видя всего его кода. –
Я унаследовал проект, который пронизан try/catch, поэтому я пытаюсь убрать предупреждения и т. Д. На этом этапе я не могу избавиться от них. –