Если вашему оператору catch требуется доступ к переменной, объявленной в операторе using, то внутри — ваш единственный вариант.
Если вашему оператору catch нужен объект, указанный в использовании, до того, как он будет удален, тогда ваш единственный вариант — внутри.
Если ваш оператор catch выполняет действие неизвестной продолжительности, например, отображение сообщения пользователю, и вы хотите избавиться от своих ресурсов до того, как это произойдет, тогда лучше всего использовать снаружи.
Всякий раз, когда у меня есть сценарий, подобный этому, блок try-catch обычно находится в другом методе, расположенном дальше по стеку вызовов от использования. Для метода нетипично знать, как обрабатывать исключения, которые возникают внутри него, как это.
Так что моя общая рекомендация снаружи — далеко снаружи.
private void saveButton_Click(object sender, EventArgs args)
{
try
{
SaveFile(myFile); // The using statement will appear somewhere in here.
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
}
person
Jeffrey L Whitledge
schedule
26.05.2011