1
resposta

[Dúvida] Como resolver essa exceção caso eu tente registrar uma banda que já tenha sido registrada?

Pessoal, fui testar todas as opções do menu, e ao clicar na opção 1 - Digite o nome da banda que deseja registrar e digitar uma banda que já foi registrado, como The Beatles, apareceu uma exceção, como mostra a imagem abaixo:

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

O código original é esse:

public override void Executar(Dictionary<string, Banda> bandasRegistradas)
{
    base.Executar(bandasRegistradas);
    ExibirTituloDaOpcao("Registro das bandas");
    Console.Write("Digite o nome da banda que deseja registrar: ");
    string nomeDaBanda = Console.ReadLine()!;
    Banda banda = new Banda(nomeDaBanda);
    bandasRegistradas.Add(nomeDaBanda, banda);
    Console.WriteLine($"A banda {nomeDaBanda} foi registrada com sucesso!");
    Thread.Sleep(4000);
    Console.Clear();
}

Daí eu mesmo criei um laço IF para verificar se a banda inserida já foi registrada e aí retornar uma mensagem ao usuário avisando que já foi registrado, se não, continuar com o registro da banda, como mostra o código abaixo:

using ScreenSound.Modelos;
namespace ScreenSound.Menus;

internal class MenuRegistrarBanda : Menu
{
    public override void Executar(Dictionary<string, Banda> bandasRegistradas)
    {
        base.Executar(bandasRegistradas);
        ExibirTituloDaOpcao("Registro das bandas");
        Console.Write("Digite o nome da banda que deseja registrar: ");
        string nomeDaBanda = Console.ReadLine()!;
        Banda banda = new Banda(nomeDaBanda);

        if (bandasRegistradas.ContainsKey(nomeDaBanda))
        {
            Console.WriteLine($"A banda {nomeDaBanda} já está registrada!");
            Console.WriteLine("Digite qualquer tecla para voltar ao menu principal.");
            Console.ReadKey();
            Console.Clear();
        }
        else
        {
            bandasRegistradas.Add(nomeDaBanda, banda);
            Console.WriteLine($"A banda {nomeDaBanda} foi registrada com sucesso!");
            Thread.Sleep(4000);
            Console.Clear();
        }

    }
}

Assim, consegui resolver esse problema. Mas, alguém com mais experiência pode verificar isso e dizer se fiz a correção certa? Gostaria de uma opinião sobre. Eu tenho estudado sozinho, não tenho outras pessoas para trocar experiência e tal. Se alguém quiser pegar meu contato e trocarmos ideia sobre códigos e aprendizado juntos, eu aceito!!

1 resposta

Oi Wellington.

Mandou bem na solução do problema!

Segue uma sugestão:

  • Para simplificar mais um pouco o código, tente usar o método TryAdd no lugar do Add:
if (bandasRegistradas.TryAdd(nomeDaBanda, banda))
{
    // código caso a banda seja adicionada.
}
else
{
    // código caso a banda já exista...
}

Bons estudos!