Che cosa è strutturata la gestione delle eccezioni

 ... 
  

L'errore non viene catturato, perché la gestione delle eccezioni strutturata non è ancora in vigore, e l'utente vede il messaggio di errore standard. Prima di poter rilevare l'errore, si deve dire a ColdFusion per cercare di catturare un errore:

 ... 

CFTRY dice ColdFusion per vedere il blocco di codice racchiuso per gli errori, e CFCATCH ColdFusion dice cosa fare se si verifica un errore. CFCATCH type = "Any" dice ColdFusion che qualsiasi errore provoca l'esecuzione di passare al codice all'interno del blocco CFCATCH specifici. CFCATCH prende un singolo attributo denominato tipo, che specifica il tipo di errore che viene catturato. Se si desidera catturare gli errori database solo, per esempio, è possibile utilizzare il seguente codice:

 ... 

Se si utilizza questo CFTRY / CFCATCH costruire, tutti gli errori di database vengono catturati e manipolati dal codice all'interno della coppia di tag CFCATCH, e tutti gli errori nondatabase caduta fino al livello successivo eccezione strutturata dell'applicazione di gestione quadro. Specificando un tipo avanzato eccezione come l'argomento di CFCATCH l'attributo di tipo, si può prendere e gestire gli errori molto specifici che si verificano al di fuori dei confini di ColdFusion Server. Il punto di vista questo molti tipi di errore è che la vostra gestione delle eccezioni strutturata granulare può rispondere ad ogni tipo in un determinato modo. Si potrebbe, per esempio, hanno un gestore di eccezioni che le catture di due tipi diversi e li gestisce due modi diversi, come segue:

 ... Codice da eseguire va qui ...  Un errore di database si è verificato.  Un errore si è verificato l'espressione 

L'esempio precedente catture sia un errore di database o di un errore di espressione e le uscite di un messaggio diverso a seconda che uno. Se l'errore non è un database o un errore di espressione, l'errore non viene catturato e l'utente vede l'uscita di messaggi standard. CFCATCH type = "Tutti" non si può prendere un certo tipo di errore. In particolare, type = "Qualsiasi" cattura qualsiasi errore derivante dal java.lang.Exception classe Java. type = "Tutti" non è, tuttavia, rilevare gli errori derivanti da java.lang.Throwable. Per catturare questi errori, è necessario definire una speciale CFCATCH, come segue:

 ...  ... 

Raramente si verifica questo tipo in quanto nessuna delle caratteristiche standard ColdFusion lanciare questo tipo di errore. Potreste essere sorpresi di apprendere che che non si può prendere alcuni errori a tutti. Il codice seguente, ad esempio, genera un errore a prescindere dalla CFTRY che circondano il cattivo codice:

 È verificato un errore! 

Il CFSET non ha alcun contenuto, in modo da ColdFusion genera un errore che indica, valide CFML Costruire Found on line 9 a colonna 7. Questo risultato può sembrare strano, però, perché si ha un CFTRY e CFCATCH type = "Qualsiasi". Il problema qui è che la CFSET Bad creato un errore compiletime, che non possono essere catturati con CFCATCH. CFCATCH può prendere solo un errore di runtime, che si verifica durante l'esecuzione del modello. Nel caso del frammento precedente, ColdFusion non avrebbe potuto portare analizzare e compilare la pagina, quindi la gestione delle eccezioni non ha effetto. Se si dovesse CFINCLUDE una pagina con un errore di compilazione, la pagina chiamante potrebbe prendere un modello tipo di errore. Questo è raro, e si deve stare attenti a non fare affidamento sulla gestione delle eccezioni per catturare errori in fase di compilazione. La risposta breve è niente! È possibile gestire un errore alcun modo che si ritenga opportuno, da ignorando completamente di esaminare in dettaglio fine, per un volo alternativo verso l'utente di un modello alternativo. Fai di solito una delle due cose, però. O reindirizzare l'utente a una pagina diversa o visualizzare un messaggio di user-friendly dicendogli quello che è successo. Puoi seguire uno dei due filosofie a riorientare l'utente. Il primo è quello di avere una pagina di errore specifico per ogni errore che possono verificarsi e reindirizzare l'utente a quella pagina specifica, come nel seguente esempio:

 ... 

L'aspetto negativo di questo approccio è che non si può dire esattamente cosa sia successo e perché. Una soluzione migliore è reindirizzare l'utente a una pagina di errore, ma passare il messaggio di errore nella URL, come segue:

 ... 

Questo codice passa un messaggio di errore dettagliato in un parametro URL alla pagina di errore. Un'altra opzione è quella di visualizzare direttamente un certo tipo di messaggio, piuttosto che reindirizzare l'utente, come segue:

 ...  Un errore di database si è verificato. 

Si può notare che il codice precedente aggiunge un CFABORT dopo il messaggio, non si desidera che la pagina errati per continuare l'esecuzione dopo che si verifica un errore. Un ultima opzione che è raramente utilizzato è quello di ignorare l'errore. Questo di solito è opportuno solo se si attendono un errore si verifichi, ma non importa a te se l'errore si verifica o meno, come mostra il seguente codice:

 ... 

Se stai ignorando un errore, aggiungendo un commento al blocco CFCATCH di solito è una buona idea in modo che non si è confuso se si torna indietro e leggere il codice in seguito. Ed essere consapevoli che l'inosservanza di un errore può rivelarsi pericoloso, perché si può finire inavvertitamente la cattura di un errore più grave di quella che ti aspettavi. Almeno la registrazione l'errore utilizzando CFLog può essere una buona idea, anche se si prevede di ignorarlo, come nel seguente esempio:

 ... 

In questo modo, è possibile rivedere l'errore specifico nel file di registro.

un articolo presentata da Jose Carreto


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "Che cosa è strutturata la gestione delle eccezioni" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 243 users browsing the articles directory