我在C#中有一些SQL处理代码,在处理UNION子句时会抛出许多异常。我想检测抛出哪个特定异常,以便相应地处理它。在测试我的应用程序时,会抛出这两个错误:
如何区分每一个并识别哪一个被抛出?我不能简单地复制/粘贴错误消息并将其放在if-statement
中,因为字段名称和架构并不总是相同。
try
{
adapter.Fill(dtResults);
}
catch (SqlException ex)
{
}
答案 0 :(得分:3)
您正在捕获的SqlException包含有关它的丰富信息,例如错误号。这允许您单独处理条件:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx
答案 1 :(得分:2)
在catch
语句中,您可以使用:
if (ex.ToLower.Contains("conversion failed")
MessageBox.Show("Error: a conversion failed");
if (ex.ToLower.Contains("multi-part identifier")
MessageBox.Show("this is the other error!");
只有一种方法可以解决这个问题:)
答案 2 :(得分:1)
SqlException有一个可以检查的Number属性(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx)。
看一下这个答案的细节,看起来是一样的:https://stackoverflow.com/a/6222003/1758762