#12 - Gestione personalizzata degli errori con Silverlight 1.0
di Alessio Leoncini, in Silverlight 1.0, 24 aprile 2008
Le funzioni Helper Silverlight.createObject e Silverlight.createObjectEx disponibili con l'SDK si occupano di preparare il codice ad inserire oggetti Silverlight nelle pagine web.
Oltre al codice HTML tali metodi aggiungono anche alcune funzionalità per migliorare la programmazione e l'esperienza dell'utente, una di essi è la gestione centralizzata delle eccezioni che si possono verificare durante la consultazione di un progetto; l'implementazione di base prevede che al verificarsi di un errore siano recuperate le informazioni principali sulla tipologia di errore e sul codice che lo ha generato e successivamente sia chiamata la funzione Alert in modo che sia aperta una finestra contenente il codice dell'eccezione, nella quale l'utente sia obbligato ad eseguire un click sul pulsante OK per proseguire.
Questa funzionalità è molto comoda per il programmatore durante la fase di sviluppo e test del progetto, tuttavia in fase di produzione una finestra di Alert può essere molto invasiva e spiacevole per l'utente, per fortuna è possibile inserire una propria implementazione della gestione degli errori dichiarando una specifica funzione nel parametro onError delle funzioni helper:
function createSilverlight() { Silverlight.createObjectEx({ source: 'PackageDownloader.xaml', parentElement:parentElement, id:'myPlugin', properties:{ width:'800', height:'600', inplaceInstallPrompt:false, background:'Black', isWindowless:'false', framerate:'24', version:'1.0'}, events:{ onError:OnErrorEventHandler, onLoad:ImageDownloader_onLoad }, initParams:null, context:null}); }
In questo esempio ogni eccezione non gestita da altri eventi specifici degli oggetti sarà intercettata dalla funzione OnErrorEventHandler nella quale andremo a recuperare tutte le informazioni più utili ad individuare l'errore, da utilizzare eventualmente per eseguire un logging o una comunicazione ai programmatori, ma presenteremo a video un messaggio integrato nel layout del sito in modo da minimizzare l'impatto di un tale evento nei confronti dell'utente:
function OnErrorEventHandler(sender, errorArgs) { // The error message to display. var errorMsg = "Silverlight Error: \n\n"; // Error information common to all errors. errorMsg += "Error Type: " + errorArgs.errorType + "\n"; errorMsg += "Error Message: " + errorArgs.errorMessage + "\n"; errorMsg += "Error Code: " + errorArgs.errorCode + "\n"; // Determine the type of error and add specific error information. switch(errorArgs.errorType) { case "RuntimeError": // Display properties specific to RuntimeErrorEventArgs. if (errorArgs.lineNumber != 0) { errorMsg += "Line: " + errorArgs.lineNumber + "\n"; errorMsg += "Position: " + errorArgs.charPosition + "\n"; } errorMsg += "MethodName: " + errorArgs.methodName + "\n"; break; case "ParserError": // Display properties specific to ParserErrorEventArgs. errorMsg += "Xaml File: " + errorArgs.xamlFile + "\n"; errorMsg += "Xml Element: " + errorArgs.xmlElement + "\n"; errorMsg += "Xml Attribute: " + errorArgs.xmlAttribute + "\n"; errorMsg += "Line: " + errorArgs.lineNumber + "\n"; errorMsg += "Position: " + errorArgs.charPosition + "\n"; break; default: break; } // Display the error message. // alert(errorMsg); var MessageBlock = host.content.findName("MessageBlock"); MessageBlock.Text = "Spiacenti, si è verificato un errore, riprovare"; }
Nota: Questo script contiene un allegato.
Approfondimenti
#39 - Visualizzare messaggi di errore estesi in ADO.NET Data Services
#131 - Disegnare linee in una scena 3D WPF
Anteprima di Expression Blend 3.0
#50 - Caricare un oggetto XAML da file remoto in Silverlight 2.0
#52 - Evitare la cache dei file XAP in Silverlight 2.0
#44 - Definire la grandezza design-time di un oggetto in Blend 2.0
#40 - Animazione di un oggetto con traiettoria ellittica in Silverlight 2.0
#42 - Rendere ridimensionabili le righe e le colonne del controllo Grid di Silverlight 2.0: GridSplitter
#34 - Definire un metodo custom in ADO.NET Data Services
#47 - Scrolling di una ListBox con la rotellina del mouse in Silverlight 2.0
Silverlight 3.0 in RTM entro l'estate
#38 - Encode di caratteri speciali nello XAML di Silverlight
Commenti
Se hai letto questo script, indica una preferenza sui suoi contenuti:
Per procedere devi essere autenticato.






















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.