我需要将数据库访问错误(如错误的用户名)与数据库查询错误(如选择插入..列不存在等)分开。它们都会抛出 SqlException。但是我希望我的程序在引发查询错误时继续,但在引发访问错误时关闭。
如何区分这两个错误?写我自己的例外?
我需要将数据库访问错误(如错误的用户名)与数据库查询错误(如选择插入..列不存在等)分开。它们都会抛出 SqlException。但是我希望我的程序在引发查询错误时继续,但在引发访问错误时关闭。
如何区分这两个错误?写我自己的例外?
我建议检查 SqlException 的 Number 属性。
下面给出了 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 中的异常处理,以了解如何进行异常处理。
可以使用 sqlconnection 属性捕获 1 个错误的用户名和密码异常,并且可以使用 sqlexception 捕获 2 个异常
try{
// Do something
}
catch
(IOException ix)
{
// handle...
}
catch (System.UnauthorizedAccessException ux)
{
// handle
}
所以这样你就可以处理访问级别异常。要交叉检查我的答案,您可以在http://msdn.microsoft.com/en-us/library/system.unauthorizedaccessexception.aspx进行验证
为什么不处理错误信息?这会让你知道它是什么错误,例如:
try
{
}
catch(SqlException e)
{
if(e.Message=="anything") //or, maybe e.Message.Contains("column")
{
}
else{}
}
然后你就可以做你想做的了!