如何处理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#中的错误代码的主要内容,如果未能解决你的问题,请参考以下文章

如何处理淘汰订阅中的错误

如何处理 swift 3 中的错误?

Flutter 如何处理异步/等待中的错误

如何处理 CORS 错误代码?

如何处理 promise 的错误?

如何处理不会导致错误的 emptycollectionsException?