在php构造函数中实现try/catch块
我有一个带有try-catch块的查询。我将创建一个对象,如果它失败,它将抛出错误消息或在其他页面上说重定向 代码在php构造函数中实现try/catch块,php,laravel-4,try-catch,Php,Laravel 4,Try Catch,我有一个带有try-catch块的查询。我将创建一个对象,如果它失败,它将抛出错误消息或在其他页面上说重定向 代码 function __construct() { try{ $this->ServiceObj = AnyClass::getService('XXX'); } catch{ return Redirect::to('/'); } } public
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块的正确方法吗?我可以在施工中使用试块和抓块吗?如果没有那么有没有更好的方法来实现这一点
提前感谢您肯定可以在构造函数中使用try-catch,但不要忘记指定要捕获的异常类,如
catch(\exception$e)
。但是,Laravel不会处理返回的重定向。(根据定义,构造函数甚至不应该返回某些内容)
一个简单的解决方法是在重定向上调用send()
。这将立即将其返回到客户端并停止应用程序
try{
$this->ServiceObj = AnyClass::getService('XXX');
}
catch(\Exception $e){
Redirect::to('/')->send();
}
但是,既然您提到了登录页面,那么您最好使用检查和重定向。就像内置的auth
过滤器一样
第三个解决办法是。在app/start/global.php
中,您可以执行以下操作:
App::error(function(FooBarException $exception)
{
return Redirect::to('/');
});
当然,这只有在异常足够具体的情况下才有效(将
FooBarException
替换为要捕获的异常)当然可以。不过,您可能希望更全面地处理错误:@lukasgeiter,谢谢,但我想知道我也可以重定向吗?事实上,我正在使用API,如果有人可以直接点击结果页面,我需要将他重定向到主页,他需要使用谷歌登录。啊,现在我明白了。。。我会在一封信里写一个答案minute@lukasgeiter..waiting谢谢你的回答。:)