|
Posted by Jason Barnett on 01/17/05 16:19
Gerard Samuel wrote:
> Im currently using php 5.0.3 on a dev box,
> trying to figure out how to correctly use
> exceptions in my code.
Exceptions can be "A Good Thing".
> Per chance, I was monitoring the __autoload() function,
> and Im noticing that calls are being made to
> exception classes that I've setup.
> But nothing is being actually thrown.
AFAIK you cannot throw an exception during the __autoload function. Or
at least that was the way it was for me when I tried it back in 5.0.0b2.
The answer I got was something along the lines of "the executor would
have no idea where to return", but it made little sense to me and I
probably am remembering that wrong anyways. :)
> As I understand it, __autoload(), only gets called, if a class
> file hasn't been loaded for a class.
Correct.
> I know for a fact that all my exception classes are derived from
> php's Exception class.
This is definitely a good practice as there are some internal functions
for those classes that are VERY useful to your own Exceptions... and you
cannot get the same functionality without extending the base Exception
class.
> I've debugged it down to this ->
> //try
> //{
> $db->connect();
> //}
> //catch(databaseException $e)
> //{
> // throw $e;
> //}
>
> The ::connect() method is supposed to throw a databaseException if a
> connection cannot be made.
> In my tests, connections are made, and the exception is not thrown.
> But the try/catch block above, for some reason, tries to throw
> the databaseException (according to __autoload()).
> If I comment it out the try/catch block, __autoload()
> doesn't try to load the databaseException object.
Um, perhaps you have things a little mixed up? __autoload is only used
to get a definition for an unknown class; it doesn't actually do any
object instantiation. It's used for "just in time" loading of a class
definition if and only if the class / file hasn't already been included.
>
> I dont know if this is a bug in my code, as Im still new to exceptions.
> Im just checking to see if anyone else experienced anything like
> this before...
>
> Thanks
--
Teach a person to fish...
Ask smart questions: http://www.catb.org/~esr/faqs/smart-questions.html
PHP Manual: http://www.php.net/manual/en/index.php
php-general archives: http://marc.theaimsgroup.com/?l=php-general&w=2
Navigation:
[Reply to this message]
|