1
resposta

Como fazer para mostrar ao usuário qual parâmetro exatamente está errado?

Pessoal, no caso, eu queria tentar mostrar ao usuário qual parâmetro está errado, se é número de agência ou o número da conta ou se é os dois. Como faço isso?

Eu tentei fazer sozinho mas ele está apenas mostrando um dos erros e não os dois quando crio uma conta com os dois parâmetros errados, acho que é devido a condicional OU que inseri no if, porém não estou conseguindo consertar isso.

Alguém me ajuda? Seguem os códigos:

Código na classe ContaCorrente:

public ContaCorrente(int numero_agencia, string numero_conta)
        {
            this.numero_agencia = numero_agencia;
            this.Conta = numero_conta;
           
            if(numero_agencia <= 0 || string.IsNullOrEmpty(numero_conta) ||numero_conta.Length <= 0)
            {
                if(numero_agencia <= 0)
                {
                    throw new ArgumentException("O número da agência deve ser maior que zero!", nameof(numero_agencia));
                }
                else
                {
                    throw new ArgumentException("O número da conta corrente deve ter um comprimento maior que zero!", nameof(numero_conta));
                }
            }

Código no Program.cs:

try
{
    ContaCorrente conta1 = new ContaCorrente(0, ""); //aqui entram os dois parâmetros: numero_agencia e o numero_conta
}
catch(ArgumentException ex)
{
    Console.WriteLine($"Erro: {ex.Message}");
    Console.WriteLine($"Parâmetro com erro: {ex.ParamName}");
    
}
1 resposta

Para mostrar ao usuário qual parâmetro está incorreto, se é o número da agência, o número da conta ou ambos, você pode fazer algumas modificações no código.

No construtor da classe ContaCorrente, você pode verificar separadamente cada parâmetro e lançar exceções específicas para cada caso. Além disso, você pode combinar as mensagens de erro em um único StringBuilder para exibi-las ao usuário. Aqui está um exemplo de como você pode fazer isso: public ContaCorrente(int numero_agencia, string numero_conta) { StringBuilder mensagemErro = new StringBuilder();

if (numero_agencia <= 0)
{
    mensagemErro.AppendLine("O número da agência deve ser maior que zero!");
}

if (string.IsNullOrEmpty(numero_conta) || numero_conta.Length <= 0)
{
    mensagemErro.AppendLine("O número da conta corrente deve ter um comprimento maior que zero!");
}

if (mensagemErro.Length > 0)
{
    throw new ArgumentException(mensagemErro.ToString());
}

this.numero_agencia = numero_agencia;
this.Conta = numero_conta;

}

No código acima, o StringBuilder chamado mensagemErro é inicializado no início do construtor. Em seguida, cada parâmetro é verificado separadamente, e caso haja algum erro, a mensagem de erro correspondente é adicionada ao StringBuilder. Se o StringBuilder contiver mensagens de erro, é lançada uma exceção ArgumentException com a mensagem completa.

No programa principal, quando você cria uma nova ContaCorrente passando os parâmetros incorretos, o bloco catch capturará a exceção. Você pode acessar a mensagem de erro completa e exibi-la ao usuário. Aqui está o código atualizado:

try { ContaCorrente conta1 = new ContaCorrente(0, ""); // Aqui entram os dois parâmetros: numero_agencia e o numero_conta } catch (ArgumentException ex) { Console.WriteLine("Erro:"); Console.WriteLine(ex.Message); }

Dessa forma, todas as mensagens de erro serão exibidas ao usuário, indicando qual parâmetro está incorreto.