Exercício - Complete uma atividade de desafio para criar e lançar exceções
Os desafios de código neste módulo são usados para reforçar o que você aprendeu e ajudá-lo a ganhar alguma confiança antes de continuar.
Criar e lançar o desafio de exceções
Neste desafio, você começa com um aplicativo de exemplo que usa uma série de chamadas de método para processar dados. As instruções de nível superior criam uma matriz de valores de entrada do usuário e chamam um método chamado Workflow1.
Workflow1 Representa um fluxo de trabalho de alto nível que percorre a matriz e passa valores de entrada do usuário para um método chamado Process1.
Process1 usa os dados de entrada do usuário para calcular um valor.
Atualmente, quando Process1 encontra um problema ou erro, ele retorna uma cadeia de caracteres descrevendo o problema em vez de lançar uma exceção. Seu desafio é implementar o tratamento de exceções no aplicativo de exemplo.
Use as seguintes etapas para concluir o desafio:
Use o seguinte código como seu aplicativo de exemplo inicial:
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; }Verifique se o aplicativo de exemplo imprime as seguintes mensagens no 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.Atualize o aplicativo de exemplo usando os seguintes requisitos:
- Todos os métodos devem ser convertidos de
static stringmétodos parastatic voidmétodos. - O
Process1método deve lançar exceções para cada tipo de problema encontrado. - O
Workflow1método deve capturar e lidar com asFormatExceptionexceções. - As instruções de nível superior devem detetar e tratar as exceções
DivideByZeroException. - A
Messagepropriedade da exceção deve ser usada para notificar o usuário sobre o problema.
- Todos os métodos devem ser convertidos de
A solução concluída deve imprimir as seguintes mensagens no 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.
Boa sorte!