Resumo : neste tutorial, você aprenderá detalhadamente sobre a classe Exception e como lançar uma nova exceção em PHP.
Introdução à classe Exception
Ao encontrar uma situação da qual você não consegue se recuperar, você pode lançar uma exceção.
Uma exceção é uma instância da Exception
classe. Como outros objetos PHP, você usa a new
palavra-chave para criar uma instância da Exception
classe.
Um Exception
objeto possui duas propriedades principais: uma mensagem e um código numérico. A mensagem descreve a exceção. O código numérico é opcional, o que especifica o contexto para uma exceção específica.
Ao criar uma nova exceção, você fornece à mensagem o código numérico opcional. Por exemplo:
<?php
$exception = new Exception('Invalid username or password', 100);
Linguagem de código: HTML, XML ( xml )
O Exception
objeto possui o getMessage()
e getCode()
que retorna a mensagem e o código numérico:
<?php
$exception = new Exception('Invalid username or password', 100);
$message = $exception->getMessage();
$code = $exception->getCode();
Linguagem de código: HTML, XML ( xml )
A declaração de lançamento
Na prática, raramente se atribui uma exceção a uma variável . Em vez disso, você levanta (ou lança) o Exception
objeto usando a throw
instrução:
<?php
throw new Exception('Invalid username or password', 100);
Linguagem de código: HTML, XML ( xml )
A throw
instrução aceita uma instância da Exception
classe ou subclasse da Exception
classe. Na verdade, aceita qualquer objeto que implemente a Throwable
interface. Observe que a Exception
classe também implementa a Throwable
interface.
Quando o PHP encontra uma throw
instrução, ele interrompe imediatamente a execução do código. Portanto, o código após a instrução throw não será executado.
Lançando um exemplo de exceção
O exemplo a seguir define uma função chamada divide()
que usa a instrução throw:
function divide($x, $y)
{
if (!is_numeric($x) || !is_numeric($y)) {
throw new InvalidArgumentException('Both arguments must be numbers or numeric strings');
}
if ($y == 0) {
throw new Exception('Division by zero, y cannot be zero');
}
return $x / $y;
}
Linguagem de código: PHP ( php )
Como funciona a define()
função.
- Primeiro, lance a
InvalidArgumentException
exceção se$x
e$y
não forem números ou sequências numéricas. - Em segundo lugar, lance a divisão por zero, exceto se
$y
for zero. - Terceiro, retorne a divisão de
$x
e$y
.
Classes de exceção integradas ao PHP
A biblioteca PHP padrão (SPL) fornece muitas subclasses da Exception
classe. Por exemplo, você pode usar InvalidArgumentException
quando um argumento de uma função ou método não é válido.
O seguinte mostra as classes de exceção no PHP 8.0:
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
Linguagem de código: texto simples ( texto simples )
Resumo
- Uma exceção é uma instância da
Exception
classe que implementa aThrowable
interface. - Use a
throw
instrução para gerar uma exceção. Athrow
instrução aceita um objeto de exceção que implementa aThrowable
interface.