Hello David, On Tue, Nov 11, 2008 at 5:16 PM, David Grudl <[EMAIL PROTECTED]> wrote: > Hello *internals* and Marcus! > > What do you think about possibility to implement to PHP 5.3 several useful > default exceptions? > > (note that InvalidArgumentException, RuntimeException and LogicException > exists since PHP 5.1) > > /** > * The exception that is thrown when the value of an argument is > * outside the allowable range of values as defined by the invoked method. > */ > class ArgumentOutOfRangeException extends InvalidArgumentException > {}
Looks a bit redundant with OutOfRangeException > > /** > * The exception that is thrown when a method call is invalid for the > object's > * current state, method has been invoked at an illegal or inappropriate > time. > */ > class InvalidStateException extends RuntimeException > {} > > /** > * The exception that is thrown when a requested method or operation is not > implemented. > */ > class NotImplementedException extends LogicException > {} > > /** > * The exception that is thrown when a requested method or operation is > deprecated. > */ > class DeprecatedException extends LogicException > {} > > /** > * The exception that is thrown when an invoked method is not supported. For > scenarios where > * it is sometimes possible to perform the requested operation, see > InvalidStateException. > */ > class NotSupportedException extends LogicException > {} > > /** > * The exception that is thrown when an I/O error occurs. > */ > class IOException extends RuntimeException > {} > > /** > * The exception that is thrown when accessing a file that does not exist on > disk. > */ > class FileNotFoundException extends IOException > {} > > /** > * The exception that is thrown when part of a file or directory cannot be > found. > */ > class DirectoryNotFoundException extends IOException > {} > > > And the last one (this is something like BadMethodException, but for > properties) > > /** > * The exception that is thrown when accessing a class member (property or > method) fails. > */ > class MemberAccessException extends LogicException > {} > The main problem about adding such classes is that it may/will break BC, so for one they will have to be renamed Spl*Exception. Additionally, there is little point in defining these exceptions if we don't use them internally, and afaik SPL wouldn't need all of them. On the other hand, we still have lot or generic RuntimeExceptions [1], we might want to use more specific classes for them but I believe the currently available exceptions will suffice in most cases. Regards 1: [EMAIL PROTECTED] ~/cvs/php-src $ fgrep -r "zend_throw_exception" ext/spl/*.c | php -R 'preg_match("/spl_ce_(\w+)/", $argn, $match); echo $match[1]."\n";' | sort | uniq -c 12 BadMethodCallException 1 DomainException 17 InvalidArgumentException 12 LogicException 3 OutOfBoundsException 10 OutOfRangeException 40 RuntimeException 7 UnexpectedValueException > > David Grudl > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- Etienne Kneuss http://www.colder.ch Men never do evil so completely and cheerfully as when they do it from a religious conviction. -- Pascal -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php