我花了最后一个小时谷歌搜索和阅读有关此问题的堆栈文章,但无法解决此问题。我附上了try catch和if语句,但仍然可以得到call to member function on null error
。这是我的代码
try{
$user = Auth::user();
if(null !== ($user->wasStripePlan())){
$data['allSubscriptions'] = (Auth::user()->wasStripePlan()) ? Auth::user()->subscriptions : [];
}
}catch (\PDOException $e){
$data['allSubscriptions'] = false;
}
关于解决方案有什么想法吗?
我认为您过分考虑了这一点。简单的if / else语句可以处理时,无需进行try / catch。
if(isset(Auth::user()){
$data['allSubscriptions'] = $data['allSubscriptions'] = (Auth::user()->wasStripePlan()) ? Auth::user()->subscriptions : [];
}else{
$data['allSbuscriptions'] = false;
}
由于您检查用户是否使用isset登录,因此不会引发任何错误,也无需尝试捕获一个错误。另外,除非您知道会引发哪种错误,否则我只会在catch块上使用基类Exception。因为除非Exception类型匹配,否则它将无法解决捕获问题。由于所有类型都继承自Exception,因此您将捕获出现的第一个类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句