Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [PHP5] Error handling OOP con programmazione procedurale

    Ciao,

    [PREMESSA]
    so che è una schifezza mescolare i due, ma....
    [/PREMESSA]

    è possibile utilizzare l'error handling OOP di PHP5, nella programmazione procedurale?

    Non sto programmando ad oggetti, ma saltuariamente mi avvalgo delle features di PHP5; e vorrei poter usare il

    try, catch

    per gestire alcune eccezioni. Solo che anche includendo il codice nel blocco 'try' mi ritorna comunque gli stessi errori.

    Ho provato a cambiare error handler ma senza successo.

    Codice PHP:
    set_error_handler(create_function('''throw new Exception("errore php");'));    
    try {
        require_once(
    $dir_mod Configuration::$module_name_default);

    catch(
    Exception $e) {
        die(
    "<span class=\"warning\">".STR_NoSuchFile."</span>");

    Sembra che non mi consideri e che scateni sempre il solito tipo di eccezione.

    Mi date una mano o mi bacchettate per il troiaio?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Beh perchè il throw che fai nella tua funzione di callback della set_error_handler non viene intercettato nel try, percui non viene gestito.

  3. #3
    Mmmmhh.... (sto friggendo le meningi...)

    Quindi come dovrei fare per far sì che venga intercettato?

    Cioè creo l'istanza di Exception e la imposto come error handler.
    Da qui in poi se si scatena un errore non dovrebbe farmi partire il catch?

    E poi comunque perchè non becca l'errore nel try? (mi son dimenticato di dire che il file "$dir_mod . Configuration::$module_name_default" non esiste!

  4. #4
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Secondo me sarebbe più corretto che tu operassi i controlli necessari senza ricorrere alla gestione delle eccezioni, che tra l'altro di norma comporta un overhead di cui si può tranquillamente fare a meno

  5. #5
    Codice PHP:
    error_reporting(E_ALL E_STRICT);
    function 
    exceptions_error_handler($severity$message$filename$lineno) {
      if (
    error_reporting() == 0) {
        return;
      }
      if (
    error_reporting() & $severity) {
        throw new 
    ErrorException($message0$severity$filename$lineno);
      }
    }
    set_error_handler('exceptions_error_handler');
    try { 
        
    /*require_once('pippo.php');
        genera un Fatal error che non è 'catchable'
        */
        
    echo $pippo;

    catch(
    Exception $e) { 
        echo 
    $e->getMessage(); 

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.