You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#重试策略调试:如何获取异常变量并判断是否为SQLException

解决方案
  • 你不需要手动创建异常变量,直接在异常捕获的catch块中对捕获到的异常实例做类型检查即可,你的示例代码存在语法错误,正确的判断方式分两种常见语言如下:

C# 示例

try
{
    // 执行你的数据库操作(包含触发异常的逻辑)
}
catch (Exception ex)
{
    // 判断是否为SQL异常(注意命名空间:System.Data.SqlClient/Microsoft.Data.SqlClient)
    bool isSqlException = ex is SqlException;
    // 调试时可以输出结果或打断点查看
    Console.WriteLine($"是否为SQL异常:{isSqlException}");
    
    // 如果异常被包装,可检查内部异常
    if (ex.InnerException is SqlException innerSqlEx)
    {
        Console.WriteLine("内部异常为SQL异常");
    }
}

Java 示例

try {
    // 执行你的数据库操作(包含触发异常的逻辑)
} catch (Exception ex) {
    // 判断是否为SQL异常
    boolean isSqlException = ex instanceof SQLException;
    System.out.println("是否为SQL异常:" + isSqlException);
    
    // 如果异常被包装,可检查内部异常
    if (ex.getCause() instanceof SQLException innerSqlEx) {
        System.out.println("内部异常为SQL异常");
    }
}
  • 补充说明:你通过RAISERROR或SQL超时触发的异常,在对应语言的数据库驱动中会被封装为标准的SQL异常类型。如果判断结果为false,大概率是异常被上层代码包装成了自定义异常或其他通用异常,此时需要检查异常的InnerException(C#)或getCause()(Java)来获取原始的SQL异常。

内容的提问来源于stack exchange,提问作者ProgrammingNewbie199

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:21:58