2011-12-13 90 views
0
class MyClass { 

    public function __construct(){ 
    } 

    private function makeError(){ 
     return sp('ABC'); // sp is undefined function 
    } 

    private function printMe(){ 
     echo "PRINT ME"; 
    } 

    public function run(){ 

     try { 
      $t = $this->makeError(); 

     }catch(Exception $e){ 
     } 

     $this->printMe();  
    } 
} 

$t = new MyClass(); 
$t->run(); 

如果运行上面的代码,会发生错误,因为sp()未定义函数。PHP忽略错误并继续处理

但我想忽略错误并运行printMe方法。

我该怎么办?

谢谢!

+0

这是否抛出什么类型的错误? – 2011-12-13 17:03:00

回答

1

你可以使用function_exist()

class MyClass { 

    public function __construct(){ 
    } 

    private function makeError(){ 
     if(!function_exist('sp')){ 
      throw new Exception(); 
     }else{ 
      return sp('ABC'); // sp is undefined function 
     } 
    } 

    private function printMe(){ 
     echo "PRINT ME"; 
    } 

    public function run(){ 

     try { 
      $t = $this->makeError(); 

     }catch(Exception $e){ 
     } 

     $this->printMe();  
    } 
} 

你追不上它does'n存在的事实,因为这是一个致命的错误

0

这是不可能的。这是一个致命的错误,不是一个例外。
因此它不能被捕捉。

在这种非常情况下,你可以避开与导致错误但是:

if (function_exists("sp")) { 
    return sp('ABC'); // sp is undefined function 
} 

同样,你可以换你的电话$this->makeError();与测试。但这意味着要处理另一种内部方法。无论如何,这只会避免那种超级特定的边缘情况。