Меню
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON PHP КАК
     ❯   

PHP Учебник


PHP Формы


PHP Продвинутый


PHP ООП


MySQL База данных


PHP XML


PHP - AJAX


PHP Примеры


PHP Справочник



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



Что такое исключения в PHP?

Исключение — это нежелательное или неожиданное событие, которое происходит во время выполнения PHP-скрипта.

Исключения генерируются многими функциями и классами PHP (если возникает неожиданная ситуация, например, недопустимые данные). Когда исключение генерируется, оно может быть перехвачено блоком кода (обычно блоком try...catch) с соответствующей обработкой ошибок. Если исключение не перехвачено, оно будет обработано стандартным обработчиком исключений, что часто приводит к фатальной ошибке и завершению скрипта.

В PHP используются следующие ключевые слова для обработки исключений:

  • throw - Это ключевое слово используется для генерации исключений.
  • try - Это ключевое слово используется для создания оператора try...catch или try...catch...finally.
  • catch - Это ключевое слово используется для обработки исключений, которые генерируются кодом в предшествующем блоке try.
  • finally - Это ключевое слово используется в конструкциях try...finally и try...catch...finally для выполнения блока кода независимо от того, возникло ли исключение.

Ключевое слово PHP throw

Ключевое слово throw используется для генерации исключения.

Если исключение НЕ перехвачено, возникнет фатальная ошибка с сообщением "Uncaught Exception", и скрипт будет завершен.

Здесь мы генерируем исключение без его перехвата:

Пример

<?php
function divide($x, $y) {
  if($y == 0) {
    throw new Exception("Невозможно делить на ноль.");
  }
  return $x / $y;
}

echo divide(5, 0); // код, который может сгенерировать исключение
echo 'Hello';
?>
Попробуйте сами »

Результат будет выглядеть примерно так:

Фатальная ошибка: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

Ключевое слово PHP try...catch

Здесь мы используем ключевое слово try...catch, чтобы перехватить исключение/ошибку из приведенного выше примера и продолжить выполнение скрипта.

Синтаксис

try {
  код, который может сгенерировать исключение
} catch(Exception $e) { код для выполнения при перехвате исключения
}

Пример

Отобразить сообщение при генерации исключения и продолжить выполнение скрипта:

<?php
function divide($x, $y) {
  if($y == 0) {
    throw new Exception("Невозможно делить на ноль.");
  }
  return $x / $y;
}

try {
  echo divide(5, 0);  // может сгенерировать исключение
} catch(Exception $e) {
  echo 'Ошибка: ' . $e->getMessage();
}

echo '<br>Hello';
?>
Попробуйте сами »

Блок catch указывает, какой тип исключения должен быть перехвачен, и имя переменной, которая может использоваться для доступа к исключению. В приведенном выше примере тип исключения — Exception, а имя переменной — $e.



Ключевое слово PHP try...catch...finally

Ключевое слово try...catch...finally может использоваться для перехвата исключений.

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

Синтаксис

try {
  код, который может сгенерировать исключение
} catch(Exception $e) { код для выполнения при перехвате исключения
} finally {
  код, который всегда выполняется независимо от исключения
}

Пример

Отобразить сообщение при генерации исключения, а затем указать, что процесс завершен:

<?php
function divide($x, $y) {
  if($y == 0) {
    throw new Exception("Невозможно делить на ноль.");
  }
  return $x / $y;
}

try {
  echo divide(5, 0); // может сгенерировать исключение
} catch(Exception $e) {
  echo 'Ошибка: ' . $e->getMessage();
} finally {
  echo '<br>Процесс завершен.';
}
?>
Попробуйте сами »

Объект Exception в PHP

Объект Exception содержит информацию о неожиданном поведении, с которым столкнулась функция.

Синтаксис

new Exception(message, code, previous)

Значения параметров

Параметр Описание
message Необязательный. Строка с описанием причины генерации исключения
code Необязательный. Целое число, которое может использоваться для легкого отличия этого исключения от других того же типа
previous Необязательный. Если это исключение было сгенерировано в блоке catch другого исключения, рекомендуется передать это исключение в данный параметр

Методы

При перехвате исключения следующая таблица показывает некоторые методы, которые можно использовать для получения информации об исключении:

Метод Описание
getMessage() Возвращает строку с описанием причины генерации исключения
getPrevious() Если исключение было вызвано другим, этот метод возвращает предыдущее исключение
getCode() Возвращает целое число, которое может использоваться для идентификации исключения
getFile() Возвращает абсолютный путь к файлу, где произошло исключение
getLine() Возвращает номер строки кода, который сгенерировал исключение

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

Пример

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

<?php
function divide($x, $y) {
  if($y == 0) {
    throw new Exception("Невозможно делить на ноль.");
  }
  return $x / $y;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  $file = $e->getFile();
  $line = $e->getLine();
  $code = $e->getCode();
  $message = $e->getMessage();
  echo "Исключение сгенерировано в $file на строке $line: [Код $code] $message";
}
?>
Попробуйте сами »

Полный справочник по исключениям

Полный справочник можно найти на странице Полный справочник по исключениям PHP.

Справочник содержит описания и примеры всех методов Exception.



×

Связаться с отделом продаж

Если вы хотите использовать услуги schoolsw3 как образовательное учреждение, команда или предприятие, отправьте нам электронное письмо:
sales@schoolsw3.com

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, отправьте нам электронное письмо:
help@schoolsw3.com

Schoolsw3 оптимизирован для обучения и подготовки. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно проверяются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего контента.
При использовании Schoolsw3 вы соглашаетесь прочитать и принять наши условия использования,
политику использования файлов cookie и конфиденциальности.

Авторское право 1999- © Copyright. Все права защищены. Schoolsw3 работает на SW3.CSS.