Domanda

Sto usando PHP 4, l'unico modo che conosco per causare un errore e si ferma tutto sta chiamando die (). Ma nel caso in cui mi imbatto in l'errore più tardi e non mi ricordo dove la sua venuta da Vorrei specificare il numero di pagina e la linea che il dado () si è verificato il (come altri errori PHP fanno). C'è un modo per fare questo?

Grazie!

È stato utile?

Soluzione

Si dovrebbe esaminare la costanti magiche.

echo __LINE__; // Line number

È anche possibile eseguire error_log () per inviare gli errori tranquillamente al registro.

Altri suggerimenti

Credo che si dovrebbe usare trigger_error () per generare un E_USER_ERROR o E_USER_WARNING. Questo consente di controllare il comportamento in dettaglio. Per esempio è possibile specificare se i messaggi devono essere mostrati a tutti utilizzando error_reporting () , o gestire l'E_USER_WARNING :. s esplicitamente usando set_error_handler ()

Il modo più semplice è quello di utilizzare:

echo __FILE__ . ": line " . __LINE__;
die();

Se si sceglie di usare PHP5, è possibile utilizzare anche eccezioni:

throw new Exception("My error message!");

L'analisi dello stack rivelerà l'intero stack di chiamate e la linea di questo è stato gettato via.

(EDIT: Grazie a [@ John Isaacs] e [@Emil H] per avermi informato che le eccezioni non sono stati aggiunti a PHP fino PHP5)

Oltre a @Jukka Dahlbom e @ suggerimenti di Ólafur Waage si potrebbe anche considerare l'utilizzo di debug_backtrace() .

error_log() per segnalare un errore e debug_backtrace() per il debug. Si potrebbe anche scrivere la propria funzione di gestione degli errori (vedi set_error_handler() ) per combinare entrambe le cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top