Php 如果构造函数中出现故障,如何防止类的进一步执行

Php 如果构造函数中出现故障,如何防止类的进一步执行,php,oop,constructor,Php,Oop,Constructor,如果构造函数中出现故障,如何防止类的进一步执行 ........Worker.php.............. class Worker { public function __construct() { try { $this->pheanstalk = new Pheanstalk('127.0.0.1'); } catch (Exception $e) {

如果构造函数中出现故障,如何防止类的进一步执行

........Worker.php..............
class Worker {

    public function __construct() {

        try {               
            $this->pheanstalk   = new Pheanstalk('127.0.0.1');
        }
        catch (Exception $e) {
            logFatal('Pheanstalk: '.$e->getMessage());
        }
    }
    .............
    .............
    .............
    .............
}

............processing.php..........
require_once ROOTPATH.'worker.php';

$worker = new worker();
$worker -> put($Data);
.............
.............
.............
.............
现在,如果try块在构造函数中失败,我不想执行put,但是剩余的代码应该在processing.php中继续


新凤凰城'127.0.0.1';抛出由catch捕获的异常。

最佳解决方案是在类外捕获异常。您不仅可以跳过put,而且记录错误也不是该类的责任。哦,单元测试也更容易

class SomeClass
{
    public function __construct() 
    {
        if ($somethingFails === true)
           throw new Exception();
    }
}

try {
    $instance = new SomeClass();
    $instance->put();
} catch (Exception $exception) { 
    // Handle here
    logFatal('Pheanstalk: '.$e->getMessage());
}

如果它是另一个抛出异常的应用程序,并且您的构造函数围绕着它。考虑一下异常,然后投出自己的。

最好的解决方法是在课堂外捕捉异常。您不仅可以跳过put,而且记录错误也不是该类的责任。哦,单元测试也更容易

class SomeClass
{
    public function __construct() 
    {
        if ($somethingFails === true)
           throw new Exception();
    }
}

try {
    $instance = new SomeClass();
    $instance->put();
} catch (Exception $exception) { 
    // Handle here
    logFatal('Pheanstalk: '.$e->getMessage());
}

如果它是另一个抛出异常的应用程序,并且您的构造函数围绕着它。考虑捕获异常,然后抛出自己。

为什么不在构造函数中抛出一个异常?
请参见

为什么不在构造函数中抛出异常?

new Pheanstalk'127.0.0.1';抛出一个当前被catch捕获的异常,所以您希望我做什么更改我在帖子底部添加了更多的解释。如果你的类是一个包装器,我会捕获并抛出我自己的异常。仍然遵循最初的解决方案;抛出一个当前被catch捕获的异常,所以您希望我做什么更改我在帖子底部添加了更多的解释。如果你的类是一个包装器,我会捕获并抛出我自己的异常。并且仍然遵循初始解决方案。