Esercizio - Completare un'attività di verifica per la creazione e la generazione di eccezioni
Le sfide del codice in questo modulo vengono usate per rafforzare ciò che si è appreso e aiutare a ottenere una certa attendibilità prima di continuare.
Creare e generare una richiesta di eccezioni
In questa sfida si inizia con un'applicazione di esempio che usa una serie di chiamate al metodo per elaborare i dati. Le istruzioni di primo livello creano una matrice di valori di input utente e chiamano un metodo denominato Workflow1.
Workflow1 rappresenta un flusso di lavoro di alto livello che scorre la matrice e passa i valori di input dell'utente a un metodo denominato Process1.
Process1 usa i dati di input dell'utente per calcolare un valore.
Attualmente, quando Process1 rileva un problema o un errore, restituisce una stringa che descrive il problema anziché generare un'eccezione. La sfida consiste nell'implementare la gestione delle eccezioni nell'applicazione di esempio.
Per completare la richiesta, seguire questa procedura:
Usare il codice seguente come applicazione di esempio iniziale:
string[][] userEnteredValues = new string[][] { new string[] { "1", "2", "3"}, new string[] { "1", "two", "3"}, new string[] { "0", "1", "2"} }; string overallStatusMessage = ""; overallStatusMessage = Workflow1(userEnteredValues); if (overallStatusMessage == "operating procedure complete") { Console.WriteLine("'Workflow1' completed successfully."); } else { Console.WriteLine("An error occurred during 'Workflow1'."); Console.WriteLine(overallStatusMessage); } static string Workflow1(string[][] userEnteredValues) { string operationStatusMessage = "good"; string processStatusMessage = ""; foreach (string[] userEntries in userEnteredValues) { processStatusMessage = Process1(userEntries); if (processStatusMessage == "process complete") { Console.WriteLine("'Process1' completed successfully."); Console.WriteLine(); } else { Console.WriteLine("'Process1' encountered an issue, process aborted."); Console.WriteLine(processStatusMessage); Console.WriteLine(); operationStatusMessage = processStatusMessage; } } if (operationStatusMessage == "good") { operationStatusMessage = "operating procedure complete"; } return operationStatusMessage; } static string Process1(String[] userEntries) { string processStatus = "clean"; string returnMessage = ""; int valueEntered; foreach (string userValue in userEntries) { bool integerFormat = int.TryParse(userValue, out valueEntered); if (integerFormat == true) { if (valueEntered != 0) { checked { int calculatedValue = 4 / valueEntered; } } else { returnMessage = "Invalid data. User input values must be non-zero values."; processStatus = "error"; } } else { returnMessage = "Invalid data. User input values must be valid integers."; processStatus = "error"; } } if (processStatus == "clean") { returnMessage = "process complete"; } return returnMessage; }Verificare che l'applicazione di esempio stampa i messaggi seguenti nella console:
'Process1' completed successfully. 'Process1' encountered an issue, process aborted. Invalid data. User input values must be valid integers. 'Process1' encountered an issue, process aborted. Invalid data. User input values must be non-zero values. An error occurred during 'Workflow1'. Invalid data. User input values must be non-zero values.Aggiornare l'applicazione di esempio usando i requisiti seguenti:
- Tutti i metodi devono essere convertiti da
static stringmetodi astatic voidmetodi. - Il
Process1metodo deve generare eccezioni per ogni tipo di problema rilevato. - Il
Workflow1metodo deve intercettare e gestire leFormatExceptioneccezioni. - Le istruzioni di primo livello devono intercettare e gestire le
DivideByZeroExceptioneccezioni. - La
Messageproprietà dell'eccezione deve essere utilizzata per notificare all'utente il problema.
- Tutti i metodi devono essere convertiti da
La soluzione completata deve stampare i messaggi seguenti nella console:
'Process1' completed successfully. 'Process1' encountered an issue, process aborted. Invalid data. User input values must be valid integers. An error occurred during 'Workflow1'. Invalid data. User input values must be non-zero values.
Buona Fortuna!