Исключения в PHP - PullRequest
       1

Исключения в PHP

0 голосов
/ 04 октября 2018

Так что я пытаюсь узнать об исключениях.И я сталкивался с тем, что люди часто делают, но на самом деле не объясняю, почему они это делают и как это работает.Может быть, это говорит само за себя, но я до сих пор не понимаю, прошу прощения, если этот вопрос может возникнуть как плохой вопрос.

В основном это код, с которым я работаю:

catch(Exception $e) {
  echo 'Message: ' .$e->getMessage();
}

Что такое $e, где определена эта переменная.У меня есть идея.

Я думаю, что вы назначаете объект исключения для переменной $e, но я не уверен.Разве это не должно быть catch (Exception = $e)?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Хм, теперь, когда я об этом думаю, я всегда считал Exception $e входом для вызова catch().

Насколько я знаю, вы не определяете $e, поскольку он уже сгенерирован, вы просто передаете его блоку catch(), как если бы это было с function name($input){}

0 голосов
/ 04 октября 2018

В этом коде

catch(Exception $e) {
  echo 'Message: ' .$e->getMessage();
}

Ключевое слово Exception является типом для параметра $e.

В PHP Exception является базовым классом исключений, который получают все исключениядля того, чтобы блок catch был универсальным для всех исключений.

т.е. вы могли бы захотеть иметь несколько обработчиков для разных типов исключений перед всеобъемлющим:

try {
  someOperation($parameter);
} catch(DatabaseException $e) {
  echo 'Database Exception: ' .$e->getMessage();
} catch(Exception $e) {
  echo 'General Exception: ' .$e->getMessage();
}
0 голосов
/ 04 октября 2018

Это работает почти так же, как параметры функции:

function foo(Bar $bar) { ... }

Вы используете подсказку типа Bar, за которой следует имя параметра $bar, и это объявляет переменную.

В случае try..catch это объявление происходит в catch:

catch (Exception $e) { ... }

При этом используется тип подсказки Exception, который здесь используется, чтобы указать, какие виды исключений catchдолжен поймать.Вы можете ограничить catch определенными типами исключений и / или определить несколько различных блоков catch для разных видов исключений.Затем само исключение доступно в переменной $e.Здесь вы можете использовать любое произвольное имя переменной, как и для параметров функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...