Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Multi catch em uma linha não funciona.

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
1 resposta
solução!

Já achei o erro. Faltou a letra "n" no erro DivisionByZeroError.