使用 php 异常仍然返回异常错误页面
Using php exception is still returning exception error page
我有以下控制器:
<?php
namespace App\Http\Controllers;
use App\WebPackage;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class WebProcessController extends Controller
{
public function sendPayment(Request $request)
{
if ($request->ptitle && $request->pricetotal ){
try {
$product = WebPackage::findOrFail($request->ptitle);
}
catch (NotFoundHttpException $exception){
die();
}
return $product;
}
只是为了尝试,我发送了一个 $request->ptitle,其值 id 不在 WebPackage 模型中。
据我所知,当显示错误异常时,die() 函数应该可以工作。
但仍然显示错误页面:
Sorry, the page you are looking for could not be found.
2/2
NotFoundHttpException in Handler.php line 113:
No query results for model [App\WebPackage] 20
我在使用 'try' 和 'catch' 时有什么不对吗?
问题是您正在捕获无效的异常类型。 findOrFail
如果没有找到记录,则抛出 \Illuminate\Database\Eloquent\ModelNotFoundException
而你在此处捕获 NotFoundHttpException
,这是完全不同的异常。
此外,如果您只是想对用户隐藏错误,您应该考虑在 Handler
中处理异常或在 .env
文件中将 APP_DEBUG
设置为 false
。
我有以下控制器:
<?php
namespace App\Http\Controllers;
use App\WebPackage;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class WebProcessController extends Controller
{
public function sendPayment(Request $request)
{
if ($request->ptitle && $request->pricetotal ){
try {
$product = WebPackage::findOrFail($request->ptitle);
}
catch (NotFoundHttpException $exception){
die();
}
return $product;
}
只是为了尝试,我发送了一个 $request->ptitle,其值 id 不在 WebPackage 模型中。
据我所知,当显示错误异常时,die() 函数应该可以工作。 但仍然显示错误页面:
Sorry, the page you are looking for could not be found.
2/2
NotFoundHttpException in Handler.php line 113:
No query results for model [App\WebPackage] 20
我在使用 'try' 和 'catch' 时有什么不对吗?
问题是您正在捕获无效的异常类型。 findOrFail
如果没有找到记录,则抛出 \Illuminate\Database\Eloquent\ModelNotFoundException
而你在此处捕获 NotFoundHttpException
,这是完全不同的异常。
此外,如果您只是想对用户隐藏错误,您应该考虑在 Handler
中处理异常或在 .env
文件中将 APP_DEBUG
设置为 false
。