Tips & Tricks: indagare a fondo le eccezioni

by Giuseppe Lanzi on 6 febbraio 2015

Capita alle volte di avere la necessità di conoscere in modo molto approfondito le eccezioni che si possono manifestare nelle proprie applicazioni. Conoscere il numero di errore esatto, lo stack trace o altre informazioni che alle volte rappresentano gli unici indizi per comprendere un problema complesso.

Le applicazioni fatte con InDe gestiscono gli errori e notificano l’evento di OnException proprio per questo motivo, tuttavia mi è capitato di vedere in assistenza che alle volte questo può non essere abbastanza. Per poter conoscere il numero e il messaggio dell’errore è infatti necessario conoscere il tipo dell’eccezione ricevuta. Ma cosa succede se nella vostra applicazione sono integrate librerie che lanciano eccezioni di un tipo specifico, magari con proprietà particolari? Non sarà possibile ottenere le informazioni estese perché nelle librerie di InDe non ci sono riferimenti a quella determinata classe di eccezioni.

Inoltre ci sono alcuni errori per i quali InDe assegna un suo proprio codice di errore, questo perché nella logica della portabilità delle applicazioni il codice dovrebbe tendere ad essere lo stesso ma tra i vari linguaggi supportati i codici di errore sono diversi!

Per risolvere il problema e ottenere tutte le informazioni che volete all’interno della vostra applicazione, magari per scriverle in un log specifico, è sufficiente aggiungere nel proprio progetto una funzione specializzata che si occupi di analizzare l’Exception che è stata notificata. E questo è possibile tramite l’uso della reflection.

Una volta ottenuto l’oggetto specializzato diventa semplice leggerlo e mostrare l’errore all’utente, scriverlo in un file di log o inviarlo via mail. A questo punto a voi la scelta.

Vi ho preparato un progetto al quale è stata aggiunta una funzione custom di libreria getException, che se usata nell’evento di OnException vi permette di mostrare a video o conoscere lo stack trace. Provate a cliccare su Simulate Exception, poi su Customization ON OFF e di nuovo su Simulate Exception. Vedrete la differenza di informazioni, ad esempio la seconda volta ho a disposizione lo stack trace.

Provate il progetto, una volta tanto ci si può divertire lanciando errori :)

Immagine: Gabriele.

Leave a Comment

Previous post:

Next post: