Tutorial PHP

PHP INÍCIO Introdução ao PHP Instalação do PHP Sintaxe PHP Comentários PHP Variáveis ​​PHP PHP Eco/Impressão Tipos de dados PHP Strings PHP Números PHP Matemática PHP Constantes PHP Operadores PHP PHP If...Else...Elseif Chave PHP Loops PHP Funções PHP Matrizes PHP PHP Superglobais PHP RegEx

Formulários PHP

Manipulação de formulários PHP Validação de formulário PHP Formulário PHP obrigatório URL/e-mail do formulário PHP Formulário PHP completo

PHP Avançado

Data e hora do PHP Incluir PHP Manipulação de arquivos PHP Arquivo PHP Abrir/Ler Arquivo PHP Criar/Gravar Upload de arquivo PHP Cookies PHP Sessões PHP Filtros PHP Filtros PHP Avançados Funções de retorno de chamada do PHP PHP JSON Exceções do PHP

PHP OOP

PHP O que é POO Classes/objetos PHP Construtor PHP Destruidor PHP Modificadores de acesso PHP Herança PHP Constantes PHP Classes abstratas PHP Interfaces PHP Características PHP Métodos estáticos PHP Propriedades estáticas do PHP Namespaces PHP Iteráveis ​​PHP

Banco de dados MySQL

Banco de dados MySQL MySQL Connect MySQL Criar banco de dados MySQL Criar Tabela Dados de inserção do MySQL MySQL Obter Último ID MySQL Inserir Múltiplo Preparado para MySQL Dados de seleção do MySQL MySQL Onde MySQL Ordenar por Dados de exclusão do MySQL Dados de atualização do MySQL Dados de limite do MySQL

PHP XML

Analisadores XML PHP Analisador PHP SimpleXML PHP SimpleXML - Obter PHP XML Expatriado PHP XML DOM

PHP - AJAX

Introdução AJAX PHP AJAX Banco de dados AJAX XML AJAX Pesquisa em tempo real AJAX Enquete AJAX

Exemplos PHP

Exemplos PHP Compilador PHP Teste PHP Exercícios PHP Certificado PHP

Referência PHP

Visão geral do PHP Matriz PHP Calendário PHP Data do PHP Diretório PHP Erro PHP Exceção PHP Sistema de arquivos PHP Filtro PHP PHP FTP PHP JSON Palavras-chave PHP PHP Libxml Correio PHP Matemática PHP PHP Diversos PHP MySQLi Rede PHP Controle de saída PHP PHP RegEx PHP SimpleXML Fluxo PHP String PHP Manipulação de variáveis ​​PHP Analisador XML PHP PHP Zip Fusos horários PHP

Exceções do PHP


O que é uma exceção?

Uma exceção é um objeto que descreve um erro ou comportamento inesperado de um script PHP.

Exceções são lançadas por muitas funções e classes PHP.

Funções e classes definidas pelo usuário também podem lançar exceções.

As exceções são uma boa maneira de interromper uma função quando ela encontra dados que ela não pode usar.


Lançando uma exceção

A throwinstrução permite que uma função ou método definido pelo usuário lance uma exceção. Quando uma exceção é lançada, o código que a segue não será executado.

Se uma exceção não for capturada, ocorrerá um erro fatal com uma mensagem "Exceção não capturada".

Vamos tentar lançar uma exceção sem pegá-la:

Exemplo

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?>

O resultado será algo assim:

Fatal error: 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

A declaração try...catch

Para evitar o erro do exemplo acima, podemos usar a try...catchinstrução para capturar exceções e continuar o processo.

Sintaxe

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
}

Exemplo

Mostrar uma mensagem quando uma exceção é lançada:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

O bloco catch indica que tipo de exceção deve ser capturada e o nome da variável que pode ser usada para acessar a exceção. No exemplo acima, o tipo de exceção é Exceptione o nome da variável é $e.


A declaração try... catch...finally

A try...catch...finallyinstrução pode ser usada para capturar exceções. O código no finallybloco sempre será executado independentemente de uma exceção ter sido capturada. Se finallyestiver presente, o catchbloco é opcional.

Sintaxe

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

Exemplo

Mostre uma mensagem quando uma exceção for lançada e indique que o processo terminou:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide. ";
} finally {
  echo "Process complete.";
}
?>

Exemplo

Emita uma string mesmo que uma exceção não tenha sido capturada:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} finally {
  echo "Process complete.";
}
?>

O objeto de exceção

O objeto de exceção contém informações sobre o erro ou comportamento inesperado que a função encontrou.

Sintaxe

new Exception(message, code, previous)

Valores de parâmetro

Parameter Description
message Optional. A string describing why the exception was thrown
code Optional. An integer that can be used used to easily distinguish this exception from others of the same type
previous Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter

Métodos

Ao capturar uma exceção, a tabela a seguir mostra alguns dos métodos que podem ser usados ​​para obter informações sobre a exceção:

Method Description
getMessage() Returns a string describing why the exception was thrown
getPrevious() If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null
getCode() Returns the exception code
getFile() Returns the full path of the file in which the exception was thrown
getLine() Returns the line number of the line of code which threw the exception

Exemplo

Informações de saída sobre uma exceção que foi lançada:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero", 1);
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $ex) {
  $code = $ex->getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>

Referência de exceção completa

Para obter uma referência completa, acesse nossa Referência Completa de Exceções PHP .

A referência contém descrições e exemplos de todos os métodos Exception.