PHP lançar exceção

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 Exceptionclasse. Como outros objetos PHP, você usa a newpalavra-chave para criar uma instância da Exceptionclasse.

Um Exceptionobjeto 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 Exceptionobjeto 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 Exceptionobjeto usando a throwinstrução:

<?php

throw new Exception('Invalid username or password', 100);Linguagem de código:  HTML, XML  ( xml )

A throwinstrução aceita uma instância da Exceptionclasse ou subclasse da Exceptionclasse. Na verdade, aceita qualquer objeto que implemente a Throwableinterface. Observe que a Exceptionclasse também implementa a Throwableinterface.

Quando o PHP encontra uma throwinstruçã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 InvalidArgumentExceptionexceção se $xe $ynão forem números ou sequências numéricas.
  • Em segundo lugar, lance a divisão por zero, exceto se $yfor zero.
  • Terceiro, retorne a divisão de $xe $y.

Classes de exceção integradas ao PHP

A biblioteca PHP padrão (SPL) fornece muitas subclasses da Exceptionclasse. Por exemplo, você pode usar InvalidArgumentExceptionquando 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
   SodiumExceptionLinguagem de código:  texto simples  ( texto simples )

Resumo

  • Uma exceção é uma instância da Exceptionclasse que implementa a Throwableinterface.
  • Use a throwinstrução para gerar uma exceção. A throwinstrução aceita um objeto de exceção que implementa a Throwableinterface.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *