Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Оптимальный ли мой вариант отлова касяка при создании экземпляра класса..

    Есть конструктор класса. Например,
    PHP код:
    Position :: Position(void) {
      
    bool res PositionGetString(POSITION_SYMBOLm_symbol);

    Есс-но параметров будет проверяться столько сколько нужно. Для удобства восприятия я отобразил 1.
    На данный момент, переменная res получит значение false, если функция PositionGetString() выполнится безуспешно. Так вот когда в месте программы, если понадобится этот класс и при создание его экземпляра, экземпляр инициализируется свойствами. В данном случае, они присваиваются в конструкторе. Так вот необходимо сделать так, чтобы в момент присвоения свойств экземпляра функцией PositionGetString(), если если эта функция вернёт false, тогда в месте, где создаётся экземпляр класса Position вызывающий метод тоже закончит работу.
    Я вот думаю, что это можно реализовать присвоением в конструкторе пользовательской ошибки SetUserError и потом там, где экземпляр создаётся проверять ошибку. Если она есть, значит касяк при создании экземпляра есть. Оптимально? Или лучше как-то иначе?
    Вопрос в том, что сам конструктор то ничего не возвращает. Поэтому внутри конструкторе никак не повлияешь на внешний код.
    Предлагаю сделать типа так:
    PHP код:
    Position :: Position(void) {
      
    bool res PositionGetString(POSITION_SYMBOLm_symbol);
      
    SetUserError(555);

    А вызываю так:
    PHP код:
    int OnInit() {
      
    ptrPosition = new Position();
      
    // Проверяем наличие ошибки. Если она есть.. РЕТЁРН ФЭЙЛД
      
    return INIT_SUCCEEDED;

X