gpt4 book ai didi

entity-framework - Entity Framework - 自定义异常的 DbUpdateException

转载 作者:行者123 更新时间:2023-12-04 08:32:47 26 4
gpt4 key购买 nike

我正在使用 Entity Framework,当从 dbContext.SaveChanges() 抛出 DbUpdateException 时,我该如何创建自定义异常并将其抛出?

我会为每个可以抛出的 SQL 约束创建一个条件吗:

if (e.InnerException.InnerException.Message.Contains("UNIQUE KEY"))
{
throw new CustomException("message");
}

最佳答案

编辑:这种方法对我来说很有意义。如果您知道您的应用程序/数据库将出现特定错误,并且它将帮助您或您的用户拥有特定的自定义异常类型,该异常类型可以快速识别否则会有些复杂或特定的场景,那么绝对可以。最好同时使用异常 type 和异常 message 以使错误尽可能清楚。我下面的代码是一个比您似乎深入研究的更简单的示例。我没有让其他代码以空引用异常或其他一些结果结束,而是使用 throw new DatabaseDataNotFoundException("Cannot find ServerAppConfiguration value for {0}", key); 来解决一切问题。

只需创建您自己的继承自 Exception 的异常类,这是我专门用于该目的的自定义异常:

public class DatabaseDataNotFoundException : Exception
{
public DatabaseDataNotFoundException() : base() { }

public DatabaseDataNotFoundException(string message) : base(message) { }

public DatabaseDataNotFoundException(string message, params object[] args)
: base(String.Format(CultureInfo.CurrentCulture, message, args)) { }

public DatabaseDataNotFoundException(string message, Exception inner)
: base(message, inner) { }

public DatabaseDataNotFoundException(string message, Exception inner, params object[] args)
: base(String.Format(CultureInfo.CurrentCulture, message, args), inner) { }

protected DatabaseDataNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) { }
}

然后你的代码变成:

if (e.InnerException.InnerException.Message.Contains("UNIQUE KEY"))
{
throw new DatabaseDataNotFoundException("message");
}

关于entity-framework - Entity Framework - 自定义异常的 DbUpdateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com