抛出异常后无法访问类的属性

时间:2013-12-04 09:15:19

标签: php class oop

我有一个PHP类,在这个例子中我只是调用MyClass。如果在这个类中出现问题,它会抛出一个我正在捕获的异常。在这个catch块中,我需要访问MyClass的一些公共类属性,但由于某种原因,它们都返回NULL。代码如下。

try {
    $myClass= new \sys\global\MyClass($id);
} catch (Exception $e) {
    die(var_dump($myClass->reading));
}

以上是打印NULL到页面,即使readingMyClass的公共属性:

namespace sys\global;

class MyClass {
    public $reading = 10;

    // ... other class code
}

我甚至在抛出异常之前在类中完成了die(var_dump($this->reading)),它的值为10

在类中抛出异常会破坏它吗?

2 个答案:

答案 0 :(得分:2)

如果在构造函数中抛出异常,则不会创建该对象。即,您无法访问不存在的对象的属性。

答案 1 :(得分:1)

根据例外情况,您可能无法访问成员。在这种情况下,您的异常会在$myClass的构造函数中出现,所以我怀疑您的对象是否正确创建,因此意味着您无法访问其属性。