【发布时间】:2011-11-09 20:59:45
【问题描述】:
您好,我正在使用 C# 和实体框架(linq 到实体)开发一个 winform 应用程序。 假设以下场景:
在某个类的方法中,我用表单值设置值对象
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”的分配和调用介于 try 和 catch 之间,因此如果触发了异常,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()" 方法捕获,所以用户知道问题的根源。我希望你能理解我想要做什么。
谢谢
【问题讨论】: