如果我在API控制器/路由中抛出异常,它总是返回一个对象,包括堆栈跟踪。我设置了APP_DEBUG=FALSE和APP_ENV=production,但是我总是得到如下的堆栈跟踪.
假设我将其中任何一个抛到控制器方法中:
throw new HttpException(410, 'Http Exception is gettting a stack trace.');
abort(404, 'Please tell me debug is not found!');
throw new UpdateResourceFailedException('Even my custom exception! How?', 422);
它返回这样一个对象:
{
"message": "Message",
"status_code": 410,
"debug": {
"line": 412,
"file": "/var/www/example.com/app/Http/Controllers/OrderController.php",
"class": "Symfony\\Component\\HttpKernel\\Exception\\HttpException",
"trace": [
"#0 [internal function]: App\\Http\\Controllers\\OrderController->show()",
"#1 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array()",
"#2 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction()",
"#3 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\\Routing\\ControllerDispatcher->dispatch()",
"#4 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\\Routing\\Route->runController()",
"#5 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(572): Illuminate\\Routing\\Route->run()",
"#6 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()",
"#7 /var/www/example.com/vendor/dingo/api/src/Http/Middleware/Auth.php(55): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()",
"#8 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Dingo\\Api\\Http\\Middleware\\Auth->handle()",
"#9 /var/www/example.com/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()"...我无法关掉它,也弄不清楚它为什么要加它。任何帮助都将不胜感激。是的,我已经转储了我的.env变量和配置文件,以查看系统认为值是什么,并且总是这样:"debug":false
对于为什么要返回调试,有什么想法吗?
发布于 2020-11-12 04:58:43
您可以始终捕获这些错误,并将异常消息作为响应返回。
try{
//throw exception here
throw new UpdateResourceFailedException('Even my custom exception! How?', 422);
}catch(UpdateResourceFailedException $ex){
// when you want http response
// return response(['custom_exception'=>$ex->getMessage()], 4xx);
// when you want resposne as json
return response()->json(['custom_exception'=>$ex->getMessage()], 4xx);
}您可以返回这些异常以及状态代码。
发布于 2020-11-12 16:37:16
您可以创建一个用于处理所有异常的特性--更新您的异常/handler.php以调用属性,而不是显示跟踪。
https://stackoverflow.com/questions/64795491
复制相似问题