Попробуйте эти две вещи отдельно и вместе:
if($_POST['submit']){}
$from
(только моя кишка) function-try-block в конструкторе не мешает исключению исключения. Вот выдержка из стандартного черновика C ++ N4140, [except.handle]:
14
Если оператор-оператор появляется в обработчике функции -try-block конструктора, программа плохо сформирована.blockquote>
15
Исключенное в настоящее время исключение отменяется, если управление достигает конца обработчика функции -try-block конструктор или деструктор. В противном случае, ...Причиной этого является то, что если базовый класс или любой конструктор-член генерирует исключение, то построение всего объекта завершается ошибкой, и его невозможно исправить, поэтому нужно исключить исключение.
На этом есть GOTW , а нижняя строка -
Обработчики функции-try-block конструктора имеют только одна цель - перевести исключение. (И, возможно, сделать каротаж или некоторые другие побочные эффекты.) Они не полезны для каких-либо других целей.
blockquote>Итак, да, ваш последний пример кода отлично.
Обтекание try / catch вокруг конструктора суперкласса позволяет вам ловушки исключений, которые бросаются в конструктор суперкласса; однако исключение автоматически восстанавливается при завершении блока catch
, и исключение продолжает распространяться.
В конце концов, суперкласс не строился. Это заставило исключение. Таким образом, вы не можете продолжать свой веселый путь, в конструкторе подкласса, а затем закончите с построенным подклассом, но с суперклассом, который не строился. Это не имеет никакого смысла.
Из http://en.cppreference.com/w/cpp/language/function-try-block :
Основной целью функции-try-blocks является регистрация или изменение, а затем восстановление данных, исключенных из списка инициализаторов членов в конструкторе. Они редко используются с деструкторами или с регулярными функциями.
blockquote>Это действительно основная добавленная функциональность блоков try-try: удобное место для регистрации «эй, эта функция породила исключение» , который охватывает всю функцию, единственное место для регистрации такого рода вещей, но не затрагивает обычную обработку исключений.