|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-05-10 06:17 UTC] vojtech at x dot cz
Description:
------------
It's seems there is not correctly processed exception from current() and script ends up with fatal error.
Reproduce code:
---------------
class Test implements Iterator {
public $arr = array();
public function rewind() { return reset($this->arr); }
public function current() { throw new Exception(); }
public function key() { return key($this->arr); }
public function next() { return next($this->arr); }
public function valid() { return (current($this->arr) !== false); }
}
$t = new Test();
$t->arr = array(1, 2, 3);
try {
foreach ($t as $v) {
; // do something
}
} catch (Exception $e) {
; // handle exception
}
Actual result:
--------------
Fatal error: Couldn't execute method Test::key in Unknown on line 0
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 04:00:02 2025 UTC |
I've had a similar problem, this time with an exception in next(): class MyIterator implements Iterator { function rewind() {} function next() { throw new Exception('next()'); } function valid() { return true; } function current() { return 'test'; } function key() { return 'test'; } } try { foreach (new MyIterator() as $x => $y) { // do something } } catch (Exception $e) { echo "{$e->getMessage()}\n"; } --- result --- Fatal error: Couldn't execute method MyIterator::valid in Unknown on line 0 --- version --- PHP 5.0.4 (cli) on Linux (Zend Engine v2.0.4-dev)