1
resposta

[Dúvida] Como aplicar o ParamName e o NameOf nesse código?

Pessoal, no caso de verificar esses dois parâmetros e criar a exceção caso eles não atendam a condição do if, como fazer para inserir o Paraname e o NameOf para dois parâmetros dentro de um mesmo laço? Tem como?

Numero_agencia = numero_agencia;
Conta = numero_conta;

if (numero_agencia <= 0 || numero_conta <=0)
{
     throw new ArgumentException(“O número da agência e o número da conta corrente devem ser maiores que zero“);
}

Daí no Program.cs, onde devo fazer alterações para passar ao usuário qual dos parâmetros estão errados? E mostrar ao usuário a mesma mensagem a baixo também referente ao número da conta?

try
{
    ContaCorrente conta2 = new ContaCorrente(0, "");
}
catch(ArgumentException ex)
{
    Console.WriteLine($"Parâmetro com erro: {ex.ParamName}");
    Console.WriteLine("Não é possível criar um número de agência menor ou igual a zero!.");
    Console.WriteLine(ex.Message);
}
1 resposta

Olá, Wellington!

Para utilizar o ParamName e o NameOf nesse caso, você pode fazer o seguinte:

Numero_agencia = numero_agencia;
Conta = numero_conta;

if (numero_agencia <= 0)
{
     throw new ArgumentException("O número da agência deve ser maior que zero", nameof(numero_agencia));
}

if (numero_conta <= 0)
{
     throw new ArgumentException("O número da conta corrente deve ser maior que zero", nameof(numero_conta));
}

Dessa forma, você pode passar o nome do parâmetro que gerou a exceção para o ParamName e o nome do parâmetro como uma string para o NameOf.

No Program.cs, você já está fazendo a utilização correta do ParamName. Para mostrar a mesma mensagem referente ao número da conta, basta adicionar um novo WriteLine:

try
{
    ContaCorrente conta2 = new ContaCorrente(0, "");
}
catch(ArgumentException ex)
{
    Console.WriteLine($"Parâmetro com erro: {ex.ParamName}");
    if (ex.ParamName == nameof(numero_agencia))
    {
        Console.WriteLine("Não é possível criar um número de agência menor ou igual a zero!");
    }
    else if (ex.ParamName == nameof(numero_conta))
    {
        Console.WriteLine("Não é possível criar um número de conta corrente menor ou igual a zero!");
    }
    Console.WriteLine(ex.Message);
}

Assim, você verifica qual foi o parâmetro que gerou a exceção e mostra a mensagem correta para o usuário.

Espero ter ajudado e bons estudos!