2
respostas

Não estou conseguindo capturar erros de codigo

Criei uma classe de exemplo tentando simular alguns erros para capturá-los mas não nenhum está caindo nos catchs. Os erros apenas estão sendo lançados para o usuário sem tratamento. testei com as versões 7.2 e 7.4 do php. Também habilitei as configurações de erro ensinadas neste modulo.

<?php

class Excecao
{

    public function lancaError()
    {
        try {
            $v = 5 / 0;
            $arr = oi, teste;
            return "ok";
        } catch (\Exception $exception) {
            return "Houve uma exceção";
        } catch (\DivisionByZeroError $error) {
            return "Houve uma divisao por zero";
        } catch (\ParseError $error) {
            return "Houve um error de parse";
        } catch (\Throwable $th) {
            return "Erro generico";
        }
    }

}

$teste = new Excecao();
echo $teste->lancaError();

O que ocorre quando executo

2 respostas

Oi kaliary, beleza?

Então, seu código tem um erro de sintaxe na linha 13 como descrito na imagem. Parece que você queria criar um array, porém esqueceu dos colchetes.

Oi, Kaliary, como vai?

Não é possível capturar erros de sintaxe, por isso está dando erro. Neste caso, você terá que declarar o array corretamente, desta forma:

$array = array("oi", "teste");

Após declarar o array corretamente, o código funcionará como esperado e capturará a exceção da divisão por zero.

Espero que eu tenha ajudado.

Abraços e bons estudos!