如何在C#窗口应用程序中返回具有成功值的异常消息?



我正在尝试将成功或失败值从一个类返回到另一个类。如果失败,我还需要将错误消息返回给另一个类。如何使用返回整数的函数来实现这一点?

clsDAL.cs

public int Insert(string name, string address)
{               
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_demo";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@id",1);
cmd.Parameters.AddWithValue("@name",name);
int i = cmd.ExecuteNonQuery();      
return i;
}//try
catch(Exception e)
{
return -1;     // Incase of failure need to return Exception error
}
}

CLSBLL.cs

public int InsertData(string name, string address)
{
int i = dobj.InsertTable(name, address);
if (i == 1)
{
MessageBox.Show("Record Inserted successfully");
}
else
{
MessageBox.Show("Insertion failed");   // Show the exception message here
}
}

将 try-catch 块移动到父方法,以便准备好使用实际的错误消息。

有几件事需要注意,看看你的代码...

  1. 除了泛型异常之外,建议捕获更具体的异常,例如 SqlException 类型。特定的异常类型始终为您提供有关错误的更精细信息。
  2. 确保在 finally 块中关闭连接并处理相关对象,因为当发生异常时,捕获块会快捷方式您的常规流。 using-语句会好得多,因为它是隐式处理的。

下面是代码的示例编辑...

public int InsertData(string name, string address)
{           
try
{
dobj.InsertTable(name, address);
MessageBox.Show("Record Inserted successfully");
}
catch (SqlException sqlException)
{
var messageBuilder= new StringBuilder();
messageBuilder.AppendLine(sqlException.Message);
foreach(SqlError sqlError in sqlException.Errors)
{
messageBuilder.AppendLine(sqlError.Message);
}
MessageBox.Show("Insertion failed with errors - " + messageBuilder.ToString());
}
catch (Exception exception)
{
MessageBox.Show("Insertion failed with errors - " + exception.Message);
}
}

相关内容

最新更新