如何正确处理控制器内部的异常?

时间:2019-10-25 05:43:10

标签: laravel laravel-excel

我正在尝试上传文件。而且,如果引发异常,我也不想看到“ whoops”页面。相反,它将返回前一页并显示一条消息。这就是我尝试过的,

try {
    $data = Excel::toArray(new Import, request('file'));
} catch (\Exception $e) {
    return back()->withErrors("an exception occured");
}

但是无论何时发生任何异常,它仍然会给我whoops页面。

如何解决?

2 个答案:

答案 0 :(得分:0)

我不相信您将能够捕获/处理致命错误。该脚本已停止,目前无法恢复。脚本关闭时,关闭处理程序正在运行。这是通过file1.xml <system name="" ostype="DummyOs" version="1"> <mbean component="CIM" type="" mbclass="" cimclass="DummyClass1"> <attribute id="Manufacturer" type="text" value="" /> </mbean> <mbean component="CIM" type="" mbclass="" cimclass="DummyClass2> <attribute id="Manufacturer" type="text" value="" /> </mbean> </system> file2.xml <system name="" ostype="dummyOs" version="1"> <mbean component="CIM" type="" mbclass="" cimclass="DummyClass1"> <attribute id="Manufacturer" type="text" value="" /> <attribute id="New_Manufacturer" type="text" value="" /></mbean> <mbean component="CIM" type="" mbclass="" cimclass="DummyClass2> <attribute id="Manufacturer" type="text" value="" /> </mbean> </system> output.xml <system name="" ostype="DummyOs" version="1"> <mbean component="CIM" type="" mbclass="" cimclass="DummyClass1"> <attribute id="Manufacturer" type="text" value="" /> <attribute id="New_Manufacturer" type="text" value="" /> </mbean> <mbean component="CIM" type="" mbclass="" cimclass="DummyClass2> <attribute id="Manufacturer" type="text" value="" /> </mbean> </system> 的关闭功能来处理的。

register_shutdown_function将检查是否有错误,是否致命,然后将Illuminate\Foundation\Bootstrap\HandleExceptions@handleShutdown传递给它自己的处理程序作为示例。

答案 1 :(得分:0)

Laravel 5.0及更高版本在app/Exceptions/Handler.php处附带错误处理程序。在这里,您可以为应用程序中的任何异常定义处理程序。这样,您无需在控制器中添加额外的错误处理。

所有信息均可在文档中找到:https://laravel.com/docs/6.x/errors#the-exception-handler