2013-05-13 69 views
-1

我有這樣一段代碼:警告,而不是PHP異常?

 

    try 
    { 
     foreach($obj_c->getGalleries($db_conn1) as $gallery) 
       { 
      $gallery->Save($db_conn1); 
     } 
     $k = 0; 
     $testing_the_exception = 15/$k; 
       //settin status to 1... 
     $obj_c->set_exec_status(3, 1, $db_conn1); 
    } 
    catch (Exception $e) 
    { 
     //settin status to 3... 
    $obj_c->set_exec_status(3, 3, $db_conn1); 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
    } 
    unset($obj_c); 
 

的事實是,它應該由零異常來進入止動部分,由於分工的,而是它只是彈出一個警告,並繼續設置狀態這是預期的行爲嗎?提前致謝。

+0

類似的東西(?甚至相同),以你在做什麼討論[這裏]從php.net的set_error_handler文檔的例子( http://stackoverflow.com/questions/1241728/can-i-try-catch-a-warning) – undefined 2013-05-13 20:04:34

回答

1

那是因爲除以0是在php中的警告,而不是一個例外。抓住這個最好的方法是測試它並拋出你自己的例外。

if($k == 0) 
    throw new Exception("Division by zero"); 
$testing_the_exception = 15/$k; 
+0

非常感謝人。事實是,這只是一個測試,我真的需要看看(例如) - $ gallery-> Save($ db_conn1)是否拋出異常。在這種情況下,我必須將狀態--in $ obj_c-> set_exec_status(X,3,$ db_conn1) - 更改爲1或3,具體取決於是否觸發了異常。如果我在迭代中遇到錯誤,我還能知道其他什麼。 Thx再次。 – rrubiorr81 2013-05-13 20:08:06

3

這是一個批發解決方案。設置錯誤報告拋出異常:

<?php 
function exception_error_handler($errno, $errstr, $errfile, $errline) { 
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline); 
} 
set_error_handler("exception_error_handler"); 

/* Trigger exception */ 
strpos(); 
?> 

這是