Saltar al contenido

Excepciones comúnmente encontradas – Argumento de excepción, argumento de excepción nula y argumento de excepción de rango.

El tipo ArgumentException se lanza cuando un argumento de un método recibe un valor de argumento inválido. Este tipo de excepción hereda de la clase System.SystemException, que a su vez deriva de la clase System.Exception base. El código que se muestra a continuación es una aplicación de ejemplo que lanza el tipo ArgumentException.

123456789101112131415161718192021222324252627282930313233 usando el sistema;namespace MyApp{classProgram{staticvoidMain(string[] args){ Consola. WriteLine("Introducir nombre");var nombrePrimerNombre = Console.ReadLine(); Console.WriteLine("Introducir apellido");var apellido = Console.ReadLine();try{var nombrecompleto =GetFullName(nombre, apellido); Console. WriteLine($"Tu nombre completo es {nombrecompleto}");}catch(ArgumentoExcepción ex){ Consola.WriteLine("Oh no, algo salió mal"); Consola. WriteLine(ex);}}staticstringGetFullName(string firstName,string lastName){if(firstName ==""|| apellido =="")thrownewArgumentException("first & los argumentos de apellido no pueden estar vacíos");return $"{firstName} {lastName}";}}

csharp

Excepciones comúnmente encontradas – Argumento de excepción, argumento de excepción nula y argumento de excepción de rango.
Excepciones comúnmente encontradas – Argumento de excepción, argumento de excepción nula y argumento de excepción de rango.

El método GetFullName tiene dos argumentos, nombre y apellido, y comprueba si alguno de los dos es una cadena vacía. Si evalúa que cualquiera de ellos es verdadero, lanza una excepción del tipo ArgumentoExcepción. Utilizamos el constructor que toma el mensaje de excepción como único parámetro. El mensaje de excepción que establecimos anteriormente no será muy útil para saber qué argumento causó la excepción. ¿No sería mejor si pudiéramos decir qué argumento causó el error, haciendo más fácil su corrección?

La clase ArgumentException tiene una propiedad ParamName que identifica el argumento inválido. Este será el nombre del argumento. Con este conocimiento, podemos actualizar el método GetFullName de la siguiente manera.

1234567staticstringGetFullName(string firstName,string lastName){if(firstName =="")thrownewArgumentException("la cadena vacía es un valor inválido", "firstName");if(lastName =="")thrownewArgumentException("la cadena vacía es un valor inválido", "lastName");return $"{firstName} {lastName}";}

csharp

Si ejecutas la aplicación y pasas una cadena vacía para el primer nombre, obtendrás el siguiente error:

123456Oh no, algo salió malSistema.ArgumentoExcepción: la cadena vacía es un valor inválidoNombre del parámetro: nombre en MiAplicación.Programa. GetFullName(String firstName, String lastName) en /Users/pmbanugo/Documents/projects/dotnet/MyApp/Program.cs:line 30 en MyApp.Program.Main(String[] args) en /Users/pmbanugo/Documents/projects/dotnet/MyApp/Program.cs:line 17

Puedes ver que imprime el mensaje de excepción junto al nombre del parámetro.