c# - 在C#中的重写方法中捕获异常

标签 c# .net oop exception error-handling

为什么以下catch块不捕获任何异常?
这与override-> base.Method()关系有关系吗?

在屏幕截图上,您可以看到抛出了数字2627的SqlException,但是catch块从不捕获它。

    public override int SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (SqlException ex) when (ex.Number == 2627)
        {
            Log.Error($"Duplicate key constraint violation occured while submitting changes, {ex.Message}");
            var (resource, duplicateKey) = ExtractDuplicateKeyViolationDetails(ex.Message);
            throw new DuplicateKeyException(resource, duplicateKey);
        }
        catch (SqlException ex) when (ex.Number == 547)
        {
            Log.Error($"Constraint violation occured while submitting changes, {ex.Message}");
            var (resource, property) = ExtractConstraintViolationDetails(ex.Message);
            throw new ConstraintViolationException(resource, property);
        }
    }

enter image description here

最佳答案

您正在 Debug模式下运行代码。每当引发异常时,VS就会停止执行,这就是您所看到的。按F5继续执行,它将进入catch块。

关于c# - 在C#中的重写方法中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60227864/

相关文章:

c# - 如何通过 C# 在 Html.ValidationSummary() 中获取 HTML 或换行符/回车符?

.net - 使用 itextsharp 从 Pdf 文件中提取文本和文本矩形坐标

ruby-on-rails - 初始化构造函数时缺少关键字错误

php - 如何使用 Mysqli 的面向对象方法预填充表单?

c# - 为什么 visual studio 在我更新 Entity Framework 模型时删除了我的类

c# - 使用 C# 从网页中抓取 JSON

c# - mysql : using BETWEEN in table?

c# - 如何使用空参数 P/调用 SetFileTime?

.net - "Invalid type owner for DynamicMethod"对接口(interface)排序时出错

java - 当父类中的 protected (或抽象)方法被删除并且子类已实现它时,如何导致编译错误/警告