Ok, the details of the problem obviously aren't being understood.
Let's assume that I explained it poorly and I'll try again.  Take the
following code (It's complete, cut/paste to see what happens.):

<?php

class running {
 private $running;
 
 public function __construct() {
  $this->running = true;
 }
 
 public function stop() {
  $this->running = false;
 }
 
 public function __destruct() {
  if ($this->running) {
   throw new exception('I have not stopped running yet!');
  }
 }
}

function fail_horribly() {
 throw new exception('This is the real error that I want a stack trace from');
}

function do_that_thing() {
  $running = new running();
  fail_horribly();
  $running->stop();
}

try {
 do_that_thing();
}
catch (exception $e) {
 echo $e->getMessage();
}

?>

While putting this together, I discovered lots of interesting
behaviour.  Depending on exactly where I put the try/catch, there are
different things that happen and different errors that occur.  It's
kinda interesting.

The thing is, that none of those errors is the result that I _want_
which is to ignore the fact that $running was unset and just report
the error that started everything going wrong.

If I could put my fictional function (get_current_exception()) in the
__destruct() method, I could detect that an exception was already in
progress and avoid throwing another one.

-- 
Bill Moran
http://www.potentialtech.com
http://people.collaborativefusion.com/~wmoran/

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to