1

我在 C# 中有一些 SQL 处理代码,在处理 UNION 子句时可能会引发许多异常。我想检测哪个特定的异常被抛出,以便相应地处理它。在测试我的应用程序时,会抛出这两个错误:

在此处输入图像描述

在此处输入图像描述

我如何区分每一个并识别出哪一个被抛出?我不能简单地复制/粘贴错误消息并将其放入,if-statement因为字段名称和架构并不总是相同的。

try
 {
   adapter.Fill(dtResults);
 }
 catch (SqlException ex)
 {
 }
4

3 回答 3

3

您正在捕获的 SqlException 具有丰富的信息,例如错误号。这允许您单独处理条件:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx

于 2013-03-16T14:29:47.080 回答
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!");

只是解决此问题的众多方法中的一种:)

于 2013-03-16T14:30:50.197 回答
1

SqlException 具有您可以检查的 Number 属性 ( http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx )。

看看这个答案的细节,它似乎是一样的:https ://stackoverflow.com/a/6222003/1758762

于 2013-03-16T14:29:33.787 回答