Исключение в конструкторе класса c#

189
17 июня 2018, 11:00

Когда писал на с++ все говорили, что выбрасывать исключение в конструкторе это плохая идея, так как может создать утечку памяти, а что вы можете сказать о исключениях выбрасываемых в конструкторах классов написанных на c#?

public FilePathExplorer(string _path)
{
    if (_path == null)
        throw new ArgumentNullException("Argument _path can not be null.");
    this._path = _path;
}
Answer 1

Выбрасывание исключений из конструктора - это как раз таки единственно правильный способ сообщить вызывающему коду, что объект не может быть создан. Это правило работает как в C++, так и C#.

Попытки же использовать какой-то флаг типа bool initialized не приводят ни к чему хорошему. Этот флаг можно элементарно забыть проверить и пытаться пользоваться объектом, который был как бы создан (конструктор отработал), но фактически (по логике программы) не инициализирован должным образом.

READ ALSO
Рандом картинок в picturebox без повторений с#(WF)

Рандом картинок в picturebox без повторений с#(WF)

очень надеюсь на вашу помощьНа форме 8 picturebox загружаю в них картинки рандомно :

204
Сохранить отчет из базы данных с помощью FastReport

Сохранить отчет из базы данных с помощью FastReport

У меня есть база данных к которой я подключаюсь с помощью OleDbConnection(файл Microsoft Access, не спрашивайте почему, задание в универе такое дали)Нужно...

214
Сортировка вставкой с обобщенным типом c#

Сортировка вставкой с обобщенным типом c#

Написал реализацию сортировки вставками с обобщенным типом, но к сожалению имею мало опыта работы с обобщениями, подскажите где тут могут...

251
Ошибки в добавление данных в БД

Ошибки в добавление данных в БД

имеется таблица с названием База в этой таблице имеются столбцы с названиями: № п, т п, п о, п п, к в, к, п к в dataGridView вписываю данные и нажимаю...

283