如果我去example.com/test,我的项目中有以下代码用于路由,如果test不存在,它将在我的框架中产生自定义404错误
/* Routing */
$router = new application\libraries\router();
$router->add('', ['controller' => 'main', 'action' => 'index']);
$router->add('login', ['controller' => 'Login', 'action' => 'new']);
$router->add('logout', ['controller' => 'Login', 'action' => 'destroy']);
$router->add('{controller}/{action}');
$router->dispatch($_SERVER['QUERY_STRING']);
问题是在我的当前文件的phpstorm控制台中,它给出了一个较弱的警告行未处理\ Exception行40
以下是第40行
$router->dispatch($_SERVER['QUERY_STRING']);
根据phpstorm的建议修复方法是用try-catch包围,所以我做了以下工作
try {
$router->dispatch($_SERVER['QUERY_STRING']);
} catch (Exception $e) {
}
该警告消失了,但是如果我尝试一个不存在的URL,它将不会显示我创建的自定义错误消息。它仅在没有try-catch的情况下起作用
我不知道您使用的是哪个路由器,但是您必须实际处理该异常。因此,您所做的可能是正确的,您只需要添加一个步骤。
如果存在一条不存在的路由,并且您的路由器引发了异常,则应在catch块中编写代码以处理该异常。像这样:
try {
$router->dispatch($_SERVER['QUERY_STRING']);
} catch (Exception $e) {
echo $e->getMessage();
}
这是一个非常简化的示例,您的$ router对象是否可以选择仅发送404?
另外,请检查路由器引发的异常类型。例如,您可能想以不同于RouteIsPrivateException的方式处理RouteNotFoundException。您可以使用多个catch语句来检查多种类型的异常。
在这里查看有关异常的更多信息:https : //www.php.net/manual/zh/language.exceptions.php
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句