Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    try catch ereditare oggetto

    try{

    $obj = new update($this);

    }catch(Exception $e){

    echo $obj->_public_value ;

    return;
    }

    come da esempio ho la necessità di verificare in caso di errore quale sia il valore $obj->_public_value dopo la prima chiamata.

    Ma mi sono accorto che il catch non ha accesso alle proprietà del try.

    Come posso superare il problema ?
    grazie.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  2. #2
    Non è il problema della accessbilità della catch.
    Codice PHP:
    class {
        public function 
    metodo()
        {
            throw new 
    Exception();
        }
    }

    try {
        
    $x = new A();
        
    $x->metodo();
    } catch(
    Exception $e) {
        
    var_dump($x);

    Come vedi nel esempio sopra, l'oggetto "x" è accessibile nella catch pur essendo creato nella try.
    Codice PHP:
    class {
        public function 
    __construct()
        {
            throw new 
    Exception();
        }
    }

    try {
        
    $x = new B();
    } catch(
    Exception $e) {
        
    var_dump($x);

    Se eccezione si verifica nel costruttore, l'oggetto non viene creato e quindi non può essere usato nella catch.

  3. #3
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    grazie. ma:

    L'eccezione non si verifica nel costruttore ma in un metodo che viene richiamato dal costruttore.

    quindi dovrei fare :

    $obj = new update();

    try{

    $obj->execute();

    }catch(Exception $e){

    echo $obj->_public_value ;

    return;
    }
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  4. #4
    Se il costruttore chiama un metodo che lancia l'eccezione e nel costruttore quell'eccezione non viene catturata è come se il costruttore lanciasse l'eccezione. Se il costruttore lancia l'eccezione, l'oggetto non viene creato e quindi non può essere usato da nessuna parte per accedere ai suoi metodi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.