区分抛出的SqlExceptions

时间:2012-07-18 05:19:16

标签: c# sql-server exception

我需要将数据库访问错误(如错误的用户名)与数据库查询错误分开(如select insert..column not exist etc.)。他们都会抛出SqlException。但是我希望我的程序在抛出查询错误时继续,但在抛出访问错误时关闭。

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

5 个答案:

答案 0 :(得分:1)

我建议检查SqlException的Number属性。

请参阅我对SqlException catch and handling

的回答

答案 1 :(得分:0)

下面给出了删除处理的基本语法,您可以根据需要进行陷阱。这是将一个例外与另一个例外分开的方法。

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

另请查看How to: Create User-Defined ExceptionsExceptions and Exception Handling (C# Programming Guide)以更好地了解异常处理,因为从您的问题来看,您似乎需要更好地了解这些概念,以便提出更好的问题。

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

try
{

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

然后你可以做你想做的事!

答案 4 :(得分:0)

try{
    // Do something
}

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

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

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

进行验证