我有这段代码:
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);
事实是它应该进入catch部分,因为除零异常,但它只是弹出警告并继续将状态设置为1.这是预期的行为吗?非常感谢。
答案 0 :(得分: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();
?>
这是来自php.net上的set_error_handler
文档
答案 1 :(得分:1)
多数民众赞成因为除以0是一个警告,而不是一个例外。捕获它的最好方法是测试它并抛出自己的异常。
if($k == 0)
throw new Exception("Division by zero");
$testing_the_exception = 15/$k;