using System;
namespace Articulos.Cap04.Excepciones.Parte5
{
public sealed class UsoArgumentNullException
{
// Método que muestra un mensaje en la salida estándar:
private static void MostrarMensaje(String mensaje)
{
// Se lanza la excepción cuando el argumento `mensaje`
// es asociado con una referencia null:
if (mensaje == null)
{
throw new ArgumentNullException ("La cadena de texto a mostrar debe ser válida.", "mensaje");
}
Console.WriteLine (mensaje);
}
public static void Main()
{
// "Bienvenidos a xCSw":
MostrarMensaje("Bienvenidos a xCSw");
try
{
// Cuando pasamos
String cadena = null;
MostrarMensaje(cadena);
}
catch (ArgumentNullException ae)
{
Console.WriteLine ("\nMensaje de error: `{0}`", ae.Message);
}
Console.WriteLine ();
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIEFydGljdWxvcy5DYXAwNC5FeGNlcGNpb25lcy5QYXJ0ZTUKewogICAgcHVibGljIHNlYWxlZCBjbGFzcyBVc29Bcmd1bWVudE51bGxFeGNlcHRpb24KICAgIHsKICAgICAgICAvLyBNw6l0b2RvIHF1ZSBtdWVzdHJhIHVuIG1lbnNhamUgZW4gbGEgc2FsaWRhIGVzdMOhbmRhcjoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIE1vc3RyYXJNZW5zYWplKFN0cmluZyBtZW5zYWplKQogICAgICAgIHsKICAgICAgICAgICAgLy8gU2UgbGFuemEgbGEgZXhjZXBjacOzbiBjdWFuZG8gZWwgYXJndW1lbnRvIGBtZW5zYWplYCAKICAgICAgICAgICAgLy8gZXMgYXNvY2lhZG8gY29uIHVuYSByZWZlcmVuY2lhIG51bGw6CiAgICAgICAgICAgIGlmIChtZW5zYWplID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24gKCJMYSBjYWRlbmEgZGUgdGV4dG8gYSBtb3N0cmFyIGRlYmUgc2VyIHbDoWxpZGEuIiwgIm1lbnNhamUiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKG1lbnNhamUpOwogICAgICAgIH0KICAgIAogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgICAgICB7CiAgICAgICAgICAgIC8vICJCaWVudmVuaWRvcyBhIHhDU3ciOgogICAgICAgICAgICBNb3N0cmFyTWVuc2FqZSgiQmllbnZlbmlkb3MgYSB4Q1N3Iik7CiAgICAgICAgICAgIAogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gQ3VhbmRvIHBhc2Ftb3MgCiAgICAgICAgICAgICAgICBTdHJpbmcgY2FkZW5hID0gbnVsbDsKICAgICAgICAgICAgICAgIE1vc3RyYXJNZW5zYWplKGNhZGVuYSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKEFyZ3VtZW50TnVsbEV4Y2VwdGlvbiBhZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKCJcbk1lbnNhamUgZGUgZXJyb3I6IGB7MH1gIiwgYWUuTWVzc2FnZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKCk7CiAgICAgICAgfQogICAgfQp9