Хотел задать вопрос. Я прочитал что такое try-catch и using, Но не понял в чем разница. Пожалуйста объясните. Если можно с примерами для mvc. Заранее спасибо.
try/catch/finally - это непосредственно средство языка для обработки исключений (с этим, думаю, всё в целом понятно).
using - это синтаксический сахар, используемый в отдельных случаях.
Конструкция using используется для объектов, реализующих интерфейс IDisposable и предназначен для детерминированной очистки ресурсов (то есть здесь и сейчас).
В чем заключается синтаксический сахар? Поясню на примере. Этот код
using(var disposable = new SomeDisposableClass())
{
// какой-то код
}
будет развернут компилятором в нечто наподобие
var disposable = new SomeDisposableClass();
try
{
// какой-то код
}
finally
{
if(disposable != null)
disposable.Dispose();
}
Как можно видеть, using - это частный случай использования конструкции try/catch/finally/, причем не для всех классов, а только для реализующих интерфейс IDispoasable. Как можно заметить, в коде, получающемся из using, не используется блок catch, то есть любые исключения, выброшенные внутри using, будут проброшены наверх.
Почему именно интерфейс IDisposable? Это отдельная тема. Вкратце: в C# пользователь не контролирует выделение и очистку памяти напрямую (так как это существенная головная боль), и всю эту рутину на себя берёт сборщик мусора. Сборщик сам удаляет объекты из памяти, и пользователь знать ничего не знает о том, когда и как он это сделает. Но иногда пользователю. нужно освободить те или иные ресурсы здесь и сейчас. Для этого предназначен интерфейс IDisposable, у которого есть метод Dispose. Если какой-то класс владеет теми или иными управляемыми или неуправляемыми ресурсами, то он должен реализовать этот интерфейс, и освободить их в методе Disopose (реализация метода разумеется возлагается на самого программиста). Конструкция using позволяет создать такой объект, сделать с ним что-то внутри конструкции, а затем вызвать у него Dispose, тем самым освободив его ресурсы тогда, когда это нужно.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости