Durante lo sviluppo di un sistema Web php, impostare E_ALL | E_STRICT
in error_reporting e aver cura di tutti i tipi di errori inclusi gli errori di avviso è una buona pratica.Quali tipi di errori dovrebbero interrompere il sistema, nel sistema web PHP rilasciato?
Ma nel sistema rilasciato, dovrei interrompere il sistema quando si è verificato un errore?
O devo arrestare il sistema solo quando si è verificato E_ERROR e ignorare tutti gli altri errori, come E_WARNING, E_NOTICE o E_STRICT?
Quali tipi di errori dovrei gestire nel mio gestore di errori personalizzato e interrompere (uscire) il sistema?
Gli avvisi devono arrestare definitivamente il sistema (ma non lasciare i gestori di errori/eccezioni originali, scrivere i propri che non rivelano alcuna informazione di errore). Minori livelli di errore sono meno definitivi, ma dovresti almeno registrarli e spedire i rapporti a te stesso - ciò ti motiverà a correggerli :) – DCoder
@DCoder grazie per i buoni consigli! Potresti dirmi perché dovresti interrompere il sistema quando E_WARNING si è verificato? –
Nella maggior parte dei casi in cui la correttezza è più importante della disponibilità elevata, è preferibile "fallire velocemente" a "andare avanti indipendentemente da cosa". Un avvertimento di solito significa che qualcosa è andato veramente male e andare avanti peggiorerebbe le cose. Considera la domanda più comune su questo sito - ["mysql_fetch_ attende parametro ..., booleano dato"] (http://stackoverflow.com/search?q=mysql+fetch+boolean+given). Se non si interrompe lo script al primo avviso, si otterrà un lungo elenco di avvertenze ricorrenti e, eventualmente, si potranno anche confondere altri dati utilizzando i risultati della query non riuscita in un'ulteriore elaborazione. – DCoder