J'ai un souci, j'ai souhaité avoir ma routine d'affichage des plantages organisés via TRY - CATCH & THROW

Voici un extrait:
Le souci est dans le constucteur (en gras)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
abstract class CustomException extends Exception implements IException
{
    protected $message = 'Unknown exception';     // Exception message
    private   $string;                            // Unknown
    protected $code    = 0;                       // User-defined exception code
    protected $file;                              // Source filename of exception
    protected $line;                              // Source line of exception
    private   $trace;                             // Unknown

    public function __construct($message = null, $code = 0)
    {
        if (!$message) {
            throw new $this('Unknown '. get_class($this));
        }
        parent::__construct($message, $code);
    }
    
    public function __toString()
    {
        return get_class($this) . " '{$this->message}' in {$this->file}({$this->line})\n"
                                . "{$this->getTraceAsString()}";
    }
}

class myException extends Skeleton
{	private         $debug ;
        public static   $myExcept = NULL ;
/**
* Exception: Constructor
*
*/	
       	public function __construct( $debug=false )
       	{	if (!self::$myExcept)                        (Ligne N° 1)
            
                    self::$myExcept = $this ;               (Ligne N° 2)

                $this->debug = $debug ;
		
		if ($this->debug)
                    print("===> Exception Instanciated" . CRLF) ;
				
                return(self::$myExcept) ;
       	}
/**
* Exception: Destructor
*
*/	
       	public function __destruct()
       	{	if ($this->debug)
				print("===> Exception Ended" . CRLF) ;
       	}
		
/**
* Exception: Execute (for test purpose) ;
*
*/	
		function execute()
		{	//user_error("myException instanciated" , E_USER_NOTICE) ; 
		}
		
/**
* Exception: Display Exception
*
*/	
   function display_exception($E)
   {	$T = $E->getTrace() ;
Testé sous debugger (Netbeans), le code (la succession des instructions.... ) du IF (Ligne n°1 passe au dessus de la ligne N°2 et donc, je ne retourne jamais de valeur de mon constructeur et donc je me plante...
J'ai pu reproduire ce "phénomène" à maintes reprises.
A noter que la variable myExcept est bien PUBLIC STATIC !!!

Je fais pourtant la même chose pour d'autres classes sans souci comme ici:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* Environment; Constructor
*
*/	
       	public function __construct( $debug )
       	{	if (!self::$envInst)
                    {   self::$envInst = $this ;

                        $this->debug = $debug ;
			if ($this->debug)
			print("===> Environ Instanciated" . CRLF) ;
                    }
                return(self::$envInst) ;
        }
Merci à celui qui pourra m'expliquer