On 09/01/2012 04:51 PM, Gustavo Lopes wrote > * In fact, if there is a unifying theme in the usage of exceptions in > PHP, is that exceptions are used when OOP interfaces are involved (see > Zend interfaces, SPL, DateTime and PDO -- though optional there). The > core vs. non-core argument only looks attractive because there are few > built-in classes in the core.
I think this is drifting off-topic. Whether or not a generator is an object is an implementation detail. If I write: $things = getStuff(); foreach($things as $thing) { do_some($thing); } which is very normal PHP that you see in millions of lines of code, I would not expect to have to wrap my foreach in a try/catch here. Even if I am used to exceptions and might have: $things = getStuff(); foreach($things as $thing) { try { do_some($thing); } catch (Exception $e) { echo $e->getMessage(); } } this is still going to fatal on me eventually with an uncaught exception on the foreach if, for example, I pass the generator a second time to something and it has run off the end. This is something you don't have to worry about currently and I think it will cause headaches for people when they start passing generators around. In theory I should be able to pass a generator to any existing code that takes an array without having to worry about modifying that code to catch foreach exceptions. And yes, I know it is actually a generator exception, but to the average user it will look like it is foreach throwing. -Rasmus -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php