doudou5101 2012-03-29 13:59
浏览 78
已采纳

如果构造函数中的某些内容失败,如何防止进一步执行类

How to prevent further execution of class if something fails in constructor.

........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);
.............
.............
.............
.............

Now if the try block fails in the constructor i dont want to execute put() but rest of code should continue in processing.php

new Pheanstalk('127.0.0.1'); throws a exception which is caught by catch.

  • 写回答

2条回答 默认 最新

  • douhu2525 2012-03-29 14:01
    关注

    Best solution is to catch the exception outside your class. Not only can you skip the put, logging errors is also not really the responsibility of that class anyway. Oh and Unit testing is easier too!

    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());
    }
    

    If it's another piece of application throwing the exception, and your constructor is wrapped around it. Consider catching the exception, and then throwing your own.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题