Nã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
Nã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
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);
}
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!