回调函数已注册)。只有当与0(零)一起使用时,die/exit才会产生正输出,从而成功终止脚本执行。所有其他的事件都指向错误。因此,不需要使用exit。
坦白地说,我应该补充一点,如果答案是使用exit/die,那么要么问题是错误的,要么脚本写得不好。在您的示例中,如果脚本需要根据某个值运行,那么代码应该如下所示:
abstract class AbstractProcess {
abstract public function run();
}
class A extends AbstractProcess {
public function run() { echo 'A'; }
}
class B extends AbstractProcess {
public function run() { echo 'B'; }
}
class C extends AbstractProcess {
public function run() { echo 'C'; }
}
class ProcessException extends \Exception { }
class Processor
{
private $handlers = [];
public function addProcess($key, AbstractProcess $process)
{
$this->handlers[$key] = $process;
}
public function run($val)
{
if ( !isset($this->handlers[$val]) )
{
throw new ProcessException('Cannot process value: ' . $val);
}
return $this->handlers[$val]->run();
}
}
try {
$processor = new Processor();
$processor->addProcess('a', new A());
$processor->addProcess('b', new B());
$processor->addProcess('c', new C());
$processor->run('5');
} catch ( \Exception $e) {
if ( $e instanceof ErrorException ) {
// handle error exception
}
if ( $e instanceof ProcessException ) {
echo $e->getMessage();
}
// ..
}
现在,如果我们退出而不是处理异常,那么我们将引入一个很难找到的bug。如果脚本在后台运行,我们甚至可能不知道这样的“退出”。