Php 引发异常后无法访问类的属性
我有一个PHP类,对于这个例子,我只是调用Php 引发异常后无法访问类的属性,php,class,oop,Php,Class,Oop,我有一个PHP类,对于这个例子,我只是调用MyClass。如果这个类中出现了错误,它会抛出一个异常,我正在捕获它。在这个catch块中,我需要访问MyClass的一些公共类属性,但由于某些原因,它们都返回NULL。代码如下 try { $myClass= new \sys\global\MyClass($id); } catch (Exception $e) { die(var_dump($myClass->reading)); } 尽管reading是MyClass的一
MyClass
。如果这个类中出现了错误,它会抛出一个异常,我正在捕获它。在这个catch块中,我需要访问MyClass
的一些公共类属性,但由于某些原因,它们都返回NULL
。代码如下
try {
$myClass= new \sys\global\MyClass($id);
} catch (Exception $e) {
die(var_dump($myClass->reading));
}
尽管reading
是MyClass
的一个公共属性,但上面的内容正在向页面打印NULL
:
namespace sys\global;
class MyClass {
public $reading = 10;
// ... other class code
}
在抛出异常之前,我甚至在类中执行了die(var_dump($this->reading))
,它的值为10
在类中引发异常会破坏它吗?根据异常是什么,您可能无法访问成员。在这种情况下,您的异常似乎是在
$myClass
的构造函数中引起的,因此我怀疑您的对象是否正确创建,因此这意味着您无法访问其属性。如果在构造函数中引发异常,则不会创建该对象。i、 e.您无法访问不存在的对象的属性。构造函数的最后一行调用引发异常的方法。构造函数正在等待该方法“完成”是有道理的,这意味着对象尚未完全创建。谢谢。@ChrisWhite如果所讨论的方法的返回值对对象的存在不是至关重要的,则可以在构造函数中捕获异常。