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.):


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();

try {
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

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

Reply via email to