Symfony 4.1: Melhorias nas Exceções
FlattenException agora exibe os erros
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