using
не предназначен для ловли исключений; он разработан, чтобы дать вам простой способ обернуть try
/ finally
вокруг объекта, который необходимо утилизировать. Если вам нужно перехватить и обработать исключения, вам нужно расширить их до полного try
/ catch
/ finally
или поместить вокруг него try
/ catch
.
Чтобы ответить на ваши изменения (это using
замена для try
/ catch
/ finally
?), Тогда нет, это не так. В большинстве случаев, когда вы используете одноразовый ресурс, вы не собираетесь обрабатывать исключение, потому что обычно ничего полезного вы не можете сделать. Таким образом, он обеспечивает удобный способ очистки ресурса независимо от того, что вы пытаетесь сделать, работает или нет.
Обычно код, который имеет дело с одноразовыми ресурсами, работает на слишком низком уровне, чтобы определить, какое правильное действие происходит при сбое, поэтому оставляется исключение для передачи вызывающей стороне, которая может решить, какое действие предпринять (например, повторить попытку, выполнить ошибку, журнал и т. д.).
Единственное место, где вы склонны использовать блок catch
с одноразовым ресурсом, - это если вы собираетесь перевести исключение (что, я полагаю, делает ваш уровень доступа к данным).