У Вас может действительно быть функция/метод без тела, но просто блока попытки/выгоды?

Я предлагаю создать шаблон индекса , который будет использоваться для всех будущих индексов, созданных вашим работником.

PUT _template/my-index-template
{
  "index-patterns": ["myindex*"],          <--- replace your real index name/pattern here
  "mappings": {
    "-": {
      "properties": {
        "key": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "payload": {
          "properties": {}
        },
        "timestamp": {
          "type": "date"                   <-- this is what changed
        }
      }
    }
  }
}

13
задан Stéphane 2 December 2008 в 23:44
поделиться

3 ответа

Да, это стандартно. Функциональные блоки попытки, как их называют, не являются так большим использованием для регулярных функций, но для конструкторов, они позволяют Вам ловить исключения, добавленные список инициализатора.

Обратите внимание, что в случае конструктора исключение будет всегда повторно бросаться в конце любых блоков выгоды.

9
ответ дан 1 December 2019 в 21:39
поделиться

У Herb Sutter есть хорошая статья об этом: http://www.gotw.ca/gotw/066.htm.

5
ответ дан 1 December 2019 в 21:39
поделиться

Да, это - допустимый C++. Одна цель, которую я нашел для него, состоит в том, чтобы перевести исключения в возвращаемые значения и иметь код, переводящий исключения, в ответ оценивает отдельный от другого кода в функции. Да, Вы можете return x; от блока выгоды как тот Вы показали (я только недавно обнаружил это, на самом деле). Но я, вероятно, просто использовал бы другой уровень фигурных скобок и поместил бы попытку/выгоду в функции в этом случае. Это будет более знакомо большинству программистов на C++.

Другая цель состоит в том, чтобы поймать исключения, выданные списком инициализатора конструктора, который использует подобный синтаксис:

struct f {
    g member;
    f() try { 
        // empty
    } catch(...) { 
        std::cerr << "thrown from constructor of g"; 
    }
};
11
ответ дан 1 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: