A captura de exceções usando o pipe (|) não está funcionando. Estou usando o PHP 8.1.4.
Código:
<?php
function funcao1()
{
echo 'Entrei na função 1' . PHP_EOL;
try {
funcao2();
} catch (DivisioByZeroError | RuntimeException $problema) {
echo "Problema tratado." . PHP_EOL;
}
echo 'Saindo da função 1' . PHP_EOL;
}
function funcao2()
{
echo 'Entrei na função 2' . PHP_EOL;
$divisao = intdiv(5, 0); // Lança uma ERRO de divisão por zero.
$arrayFixo = new SplFixedArray(2); // Cria um array com um tamanho fixo de 2 posições.
$arrayFixo[3] = 'Valor'; // Tenta atribuir um valor à quarta posição. Lança uma EXCEÇÃO.'
for ($i = 1; $i <= 5; $i++) {
echo $i . PHP_EOL;
}
echo 'Saindo da função 2' . PHP_EOL;
}
echo 'Iniciando o programa principal' . PHP_EOL;
funcao1();
echo 'Finalizando o programa principal' . PHP_EOL;
Saída:
Iniciando o programa principal
Entrei na função 1
Entrei na função 2
PHP Fatal error: Uncaught DivisionByZeroError: Division by zero in D:\git\php-exceptions\pilha.php:19
Stack trace:
#0 D:\git\php-exceptions\pilha.php(19): intdiv()
#1 D:\git\php-exceptions\pilha.php(8): funcao2()
#2 D:\git\php-exceptions\pilha.php(29): funcao1()
#3 {main}
thrown in D:\git\php-exceptions\pilha.php on line 19