如何处理c#中的错误代码
Posted
技术标签:
【中文标题】如何处理c#中的错误代码【英文标题】:How to Handle error code in c# 【发布时间】:2012-09-04 10:13:24 【问题描述】:我在 C# 中遇到了如何处理 try
- catch
中的错误的问题。
示例我将删除记录的代码写入数据库,但该记录已 FK 到另一个表中。如何处理?
try
// delete record in database
catch (Exception ex)
int error = // how to get this code exception
【问题讨论】:
您可以参考以下链接。希望对您有所帮助***.com/questions/2403348/… 【参考方案1】:您可以捕获SQLException 而不是一般的Exception
并使用其Number 属性
catch (SqlException ex)
Console.WriteLine(ex.Number);
【讨论】:
【参考方案2】:try
# SQL Stuff
catch (SqlException ex)
if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
switch (ex.Errors[0].Number)
case 547: // Foreign Key violation
throw new InvalidOperationException("Some helpful description", ex);
break;
case 2601: // Primary key violation
throw new DuplicateRecordException("Some other helpful description", ex);
break;
default:
throw new DataAccessException(ex);
根据foreign-key-violation
看看: how-to-handle-db-exception-in-c-sharp
这将告诉您如何精确定位外键错误。
也看MSDN Row Deletion including foreign keys
这解释了将级联设置为 on - 这是我相信你所缺少的。
【讨论】:
【参考方案3】:Exception
将保存错误类型的详细信息
如果要捕获特定类型的异常,请在 catch 中使用该类型。
例如:
catch (SqlException sqlex)
【讨论】:
【参考方案4】:Win32 可以使用Marshal.GetLastWin32Error()
。数据库使用 SqlException 类。
【讨论】:
【参考方案5】:try
//exec delete command
catch (SQLException e)
//if SQL error indicates referential integrity violation
throw ReferentialIntegrityViolationException// or whatever
【讨论】:
@O.D:如何将此错误放入哪个组,例如在数据库中删除 SQLException ,但另一个放入哪个组?谢谢 @M.B:进入哪个组是什么意思? 当用户想要删除记录并且这条记录fk到另一个表字段错误到SQLException时的示例 好的,因此您可以按照答案中所示的方式捕获它并提供您向用户显示的错误消息。 您可以向用户提供发生故障的消息,而不是抛出 ReferentialIntegrityViolationException【参考方案6】:try
// your code to run
catch(SqlException ex)
Console.WriteLine(ex.Message);
// Catch all Exceptions
catch(Exception)
Console.WriteLine(Message);
【讨论】:
以上是关于如何处理c#中的错误代码的主要内容,如果未能解决你的问题,请参考以下文章