FlattenException now unwraps errors
Contributed by
Alexander M. Turek
in #26028.
Symfony 把程序抛出的错误打包在 FatalThrowableError
中。这可让真正的 error类 不显示在异常页面中,当你把 0
做为除数时,你只能看到 Symfony 的 FatalThrowableError
而不是 PHP 的 DivisionByZeroError
。
在 Symfony 4.1 中,FlattenException
已经从 FatalThrowableError
实例中解包出来,并记录下打了包的错误信息。结果就是,真正的 error类 始终显示在异常页页中:
引入全新的异常类
Contributed by
Sullivan Senechal
and Florent Mata
in #25775
and #26475.
在 Symfony 4.1 我们在 Process组件 中引入了全新的 ProcessSignaledException
类,来正确抓取发出信号的进程错误。同时,在 HttpFoundation组件 中,我们针对文件上传处理引入了新的细节丰富的异常类,来替换掉通用的万能 FileException
异常:
1 2 3 4 5 6 7 | 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; |
还有,PHP 7.1 支持了 multi catch exception handling(获取多个异常的处理),你可以用同一个 catch()
区块来处理若干个异常:
1 2 3 4 5 | try {
// ...
} catch (FormSizeFileException | IniSizeFileException $e) {
// ...
} |
改进了的报错页
Contributed by
Javier Eguiluz
in #26671.
报错页面在 Symfony 4.1 中被改进了,减少了关于 "vendor code" 三方代码的信息。如果出错的代码属于 vendor/
文件夹,我们将这些信息最小化到一行之内,并且不再显示其参数。其他代码保持相同,以便帮你轻易聚焦在自己程序的代码中: