Exercício - Complete uma atividade de desafio para criar e lançar exceções

Concluído

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:

  1. 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;
    }
    
  2. 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.
    
  3. Atualize o aplicativo de exemplo usando os seguintes requisitos:

    • Todos os métodos devem ser convertidos de static string métodos para static void métodos.
    • O Process1 método deve lançar exceções para cada tipo de problema encontrado.
    • O Workflow1 método deve capturar e lidar com as FormatException exceções.
    • As instruções de nível superior devem detetar e tratar as exceções DivideByZeroException.
    • A Message propriedade da exceção deve ser usada para notificar o usuário sobre o problema.
  4. 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!