-1

私はこのコードを持っています:


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

実際には、ゼロ除算の例外のため、キャッチ部分に入る必要がありますが、代わりに、警告をポップしてステータスを 1 に設定し続けています。これは予想される動作ですか? よろしくお願いします。

4

2 に答える 2

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

これは、set_error_handlerphp.net のドキュメントの例です。

于 2013-05-13T20:03:13.267 に答える
1

これは、0 による除算が php の警告であり、例外ではないためです。これをキャッチする最善の方法は、テストして独自の例外をスローすることです。

if($k == 0)
    throw new Exception("Division by zero");
$testing_the_exception = 15/$k; 
于 2013-05-13T19:56:34.027 に答える