gpt4 book ai didi

php - 在 php 构造函数中实现 try/catch block

转载 作者:行者123 更新时间:2023-12-05 06:44:19 24 4
gpt4 key购买 nike

我有一个带有 try-catch block 的查询。我要创建对象,如果它失败,它将抛出错误消息或在其他页面上说重定向。

代码

function __construct() {
try{
$this->ServiceObj = AnyClass::getService('XXX');
}
catch{
return Redirect::to('/');
}
}

public function MyOwnFunction() {

$getValueofCode = $this->_ServiceObj->set($endPoint_Url); //it's only example method not want to set anything
}

这是在构造函数中定义和使用 try catch block 的正确方法吗?我可以在构造中使用 try & catch block 吗?如果,是否有更好的方法来实现这一目标?

提前致谢!!!

最佳答案

您绝对可以在构造函数中使用 try catch,只是不要忘记像 catch (\Exception $e) 一样指定要捕获的异常类。但是 Laravel 不会处理返回的重定向。 (根据定义,构造函数甚至不应该返回任何东西)

解决此问题的一个简单方法是在重定向时调用 send()。这会立即将其返回给客户端并停止应用。

try{ 
$this->ServiceObj = AnyClass::getService('XXX');
}
catch(\Exception $e){
Redirect::to('/')->send();
}

但是既然你提到了登录页面,你最好使用 before filter检查和重定向。就像内置的 auth 过滤器一样。

第三种解决方案是 App::error .在 app/start/global.php 中你可以这样做:

App::error(function(FooBarException $exception)
{
return Redirect::to('/');
});

当然,这只有在您的异常足够具体时才有效(将 FooBarException 替换为您想要捕获的异常)

关于php - 在 php 构造函数中实现 try/catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com