【发布时间】:2021-02-28 03:43:58
【问题描述】:
我正在尝试使用 N 层架构创建一个 c# 应用程序。 这是我在数据库中插入记录的业务层方法。
public static bool AddEmployeeBL(Employee newEmployee)
{
bool employeeAdded = false;
try
{
if(ValidateEmployee(newEmployee))
{
EmployeeDAL employeeDAL = new EmployeeDAL();
employeeAdded = employeeDAL.AddEmployeeDAL(newEmployee);
}
}
catch (MyException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
return employeeAdded;
}
异常发生在最后一个 catch 块中的 throw ex 语句处。
DAL类方法如下,这里是添加数据的方法。
public bool AddEmployeeDAL(Employee newEmployee)
{
bool employeeAdded = false;
try
{
DbCommand command = DataConnection.CreateCommand();
command.CommandText = "uspAddEmployee";
DbParameter param = command.CreateParameter();
param.ParameterName = "@UserId";
param.DbType = DbType.Int32;
param.Value = newEmployee.UserId;
command.Parameters.Add(param);
param = command.CreateParameter();
param.ParameterName = "@Name";
param.DbType = DbType.String;
param.Value = newEmployee.Name;
command.Parameters.Add(param);
int affectedRows = DataConnection.ExecuteNonQueryCommand(command);
if (affectedRows > 0)
{
employeeAdded = true;
}
}
catch (DbException ex)
{
string errorMessage = string.Empty;
errorMessage = ex.Message;
throw new MyException(errorMessage);
}
return employeeAdded;
}
配置类: 公共类 MyConfiguration
static string providerName;
private static string connectionString;
public static string ConnectionString { get => connectionString; set => connectionString = value; }
public static string ProviderName { get => providerName; set => providerName = value; }
public MyConfiguration()
{
providerName = ConfigurationManager.ConnectionStrings["Connection"].ProviderName;
connectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
}
}
【问题讨论】:
-
开启 First Chance Exceptions 看看到底抛出了什么。这就是为什么不捕获异常并像那样重新抛出它们的原因。如果您不处理异常,根本不要捕获它,如果您必须重新抛出,那么只需
throw; -
这能回答你的问题吗? What is a NullReferenceException, and how do I fix it? 是的,我知道这不是完全相同的例外