3

我需要将数据库访问错误(如错误的用户名)与数据库查询错误(如选择插入..列不存在等)分开。它们都会抛出 SqlException。但是我希望我的程序在引发查询错误时继续,但在引发访问错误时关闭。

如何区分这两个错误?写我自己的例外?

4

5 回答 5

1

我建议检查 SqlException 的 Number 属性。

请参阅我对SqlException 捕获和处理的回答

于 2012-07-18T06:06:48.140 回答
0

下面给出了 excption 处理的基本语法,您可以根据需要输入任意类型的陷阱。这是将一个例外与另一个例外分开的方法。

try
{
    // Statements that are can cause exception
}
catch(Type x)
{
    // Statements to handle exception
}
finally
{
    // Statement to clean up 
}

还请查看如何:创建用户定义的异常异常以及异常处理(C# 编程指南),以更好地理解异常处理,因为从您的问题看来,您似乎需要更好地了解这些概念,以便提出更好的问题。

提高您的问题标准,以便在这个社区中获得更好的答案并提高接受率。

如果您正在使用 asp.net,请同时查找C# 和 ASP .Net 中的异常处理,以了解如何进行异常处理。

于 2012-07-18T05:26:15.100 回答
0

可以使用 sqlconnection 属性捕获 1 个错误的用户名和密码异常,并且可以使用 sqlexception 捕获 2 个异常

于 2012-07-18T05:30:32.167 回答
0
try{
    // Do something
}

catch 
(IOException ix)
{
   // handle...
 }  

 catch (System.UnauthorizedAccessException ux)
 {
    // handle
 }

所以这样你就可以处理访问级别异常。要交叉检查我的答案,您可以在http://msdn.microsoft.com/en-us/library/system.unauthorizedaccessexception.aspx进行验证

于 2012-07-18T08:18:59.303 回答
0

为什么不处理错误信息?这会让你知道它是什么错误,例如:

try
{

}
catch(SqlException e)
{
    if(e.Message=="anything") //or, maybe e.Message.Contains("column")
     {
     }
    else{}
}

然后你就可以做你想做的了!

于 2012-07-18T05:39:18.617 回答