Привет! Я разрабатываю приложение winform с использованием C # и платформы сущностей (linq to entity).Предположим, что следующий сценарий:
В методе некоторого класса я устанавливаю и объект значений со значениями формы
private void agrega_cliente_Click(object sender, EventArgs e)
{
cliente = new _Cliente();
try
{
cliente.nombres = nom_cliente.Text;
cliente.apellidoP = apellidoP_cliente.Text;
cliente.apellidoM = apellidoM_cliente.Text;
cliente.fechaNacimiento = fechaNacimientoPicker.Value.Date;
if (operaciones.AgregaCliente(cliente, referencias))
{
MessageBox.Show("Cliente Agregado");
this.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Обратите внимание, что назначение и вызов метода "AgregaCliente" находится междупопробуйте и поймайте, поэтому, если вызвано исключение, MessageBox покажет его.
Затем в другом классе у меня есть метод AgregaCliente, который вставляет значения в базу данных.
public bool AgregaCliente(_Cliente cliente, ArrayList refes)
{
try
{
Cliente cli = new Cliente()
{
Nombres = cliente.nombres,
ApellidoP = cliente.apellidoP,
ApellidoM = cliente.apellidoM,
FechaNac = cliente.fechaNacimiento
};
if (NombreExiste(cli))
context.clientes.AddObject(cli);
else
throw new System.ArgumentException("El usuario ya existe");
if (refes.Count != 0)
{
foreach (_Referencia elem in refes)
context.referencias_personales.AddObject(AgregaReferencia(elem));
}
context.SaveChanges();
}
catch (Exception ex)
{
return false;
}
return true;
}
Внутри этого методаесть вызов "NombreExiste()"
, который проверяет, что пользователь еще не вставлен, если пользователь существует, генерируется исключение.
Таким образом, проблема заключается в том, что, если исключение выдается в методе "AgregaCliente"
Я хочу, чтобы это исключение было перехвачено методом "agrega_cliente_Click()"
, чтобы пользователь знал, из-за чего возникла проблема.Я надеюсь, вы понимаете, что я пытаюсь сделать.
Спасибо