Symfony 4.1: Melhorias nas Exceções

FlattenException agora exibe os erros

Andréia Bohner
2 min readApr 28, 2018

O symfony envolve os erros lançados pela aplicação dentro de um FatalThrowableError. Isso faz com que a classe de erro real não seja exibida nas páginas de exceção, onde você vê, por exemplo, FatalThrowableError do Symfony em vez de DivisionByZeroError do PHP quando seu código tenta dividir por 0.

No Symfony 4.1, FlattenException agora exibe as instâncias de FatalThrowableError e grava em log o erro. Em conseqüência, a classe de erro real agora é sempre exibida na página de exceção:

Adicionadas novas classes de exceção

No Symfony 4.1, foi adicionada uma nova classe ProcessSignaledException no componente Process para capturar corretamente os erros do processo sinalizado. Além disso, no componente HttpFoundation, foram adicionadas novas classes de exceção detalhadas para o manuseio de upload de arquivos para substituir o FileException genérico:

use Symfony\Component\HttpFoundation\File\Exception\CannotWriteFileException;
use Symfony\Component\HttpFoundation\File\Exception\ExtensionFileException;
use Symfony\Component\HttpFoundation\File\Exception\FormSizeFileException;
use Symfony\Component\HttpFoundation\File\Exception\IniSizeFileException;
use Symfony\Component\HttpFoundation\File\Exception\NoFileException;
use Symfony\Component\HttpFoundation\File\Exception\NoTmpDirFileException;
use Symfony\Component\HttpFoundation\File\Exception\PartialFileException;

Além disso, agora que o PHP 7.1 suporta o tratamento de múltiplas exceções, você pode processar várias exceções com o mesmo bloco catch():

try {
// ...
} catch (FormSizeFileException | IniSizeFileException $e) {
// ...
}

Melhorado o design da página de exceção

As páginas de exceção foram aprimoradas no Symfony 4.1 para exibir menos informações sobre “código de fornecedor (vendor)”. Se algum código pertence ao diretório vendor/, suas informações são agora compactadas para caber em uma única linha e não são exibidos mais seus argumentos. O outro código permanece o mesmo, o que ajuda você a se concentrar mais facilmente no seu próprio código da aplicação:

Tradução de: New in Symfony 4.1: Exception improvements

--

--