Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Eu fiz os passos da aula direitinho e não funcionou o que a exceção deveria fazer

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeNão funcionou, fiz igual a aula das exceções e simplesmente não funcionou, não faço ideia do que eu tenha feito de errado

2 respostas

Boa tarde,

Console.ReadLine() lê a entrada do usuário como uma string, e [0] acessa o primeiro caractere dessa string.

Você deve estar teclando ENTER sem digitar nada antes. Ou você digite algo , ou evite o erro numa condição, exibindo a mensagem : Por favor, digite uma opção! Algo como:

string entrada = Console.ReadLine();

if (string.IsNullOrEmpty(entrada))
{
    Console.WriteLine("Por favor, digite uma opção");	
}
else
{
    opcao = entrada[0];
    Console.WriteLine(opcao);
}

solução!

Olá Miguel, bom dia! Tudo bom?

Pelo que vejo na imagem, a exceção System.IndexOutOfRangeException está sendo lançada porque você está tentando acessar um índice que está fora dos limites do array. Isso ocorre na linha onde você faz opcao = Console.ReadLine()[0];. Se o usuário simplesmente pressionar "Enter" sem digitar nada, Console.ReadLine() retornará uma string vazia, e tentar acessar o índice [0] resultará nessa exceção.

Para resolver isso, você pode verificar se a entrada do usuário não está vazia antes de tentar acessar o primeiro caractere. Aqui está um exemplo de como você pode modificar o código para tratar essa situação:

void AtendimentoCliente()
{
    try
    {
        char opcao = '0';
        while (opcao != '6')
        {
            Console.Clear();
            Console.WriteLine("===============================");
            Console.WriteLine("===       Atendimento       ===");
            Console.WriteLine("===1 - Cadastrar Conta      ===");
            Console.WriteLine("===2 - Listar Contas        ===");
            Console.WriteLine("===3 - Remover Conta        ===");
            Console.WriteLine("===4 - Ordenar Contas       ===");
            Console.WriteLine("===5 - Pesquisar Conta      ===");
            Console.WriteLine("===6 - Sair do Sistema      ===");
            Console.WriteLine("===============================");
            Console.WriteLine("\n\n");
            Console.Write("Digite a opção desejada: ");
            try
            {
                string entrada = Console.ReadLine();
                if (!string.IsNullOrEmpty(entrada))
                {
                    opcao = entrada[0];
                }
                else
                {
                    throw new ByteBankException("Nenhuma opção foi digitada.");
                }
            }
            catch (Exception excecao)
            {
                throw new ByteBankException(excecao.Message);
            }

            switch (opcao)
            {
                case '1':
                    CadastrarConta();
                    break;
                case '2':
                    ListarContas();
                    break;
                default:
                    Console.WriteLine("Opcao não implementada.");
                    break;
            }
        }
    }
    catch (ByteBankException excecao)
    {
        Console.WriteLine($"{excecao.Message}");
    }
}

Neste exemplo, verificamos se a entrada não é nula ou vazia antes de acessar o primeiro caractere. Se a entrada estiver vazia, lançamos uma exceção ByteBankException com uma mensagem adequada.

Espero ter ajudado e bons estudos!