当前位置: 首页 > 知识库问答 >
问题:

ApplicationException[重复]的使用

漆雕升
2023-03-14

我想知道,当用户违反某些业务规则时,是否建议使用ApplicationException返回应用程序错误。例如:

public void validate(string name, string email)
{   
    int count1 = (from p in context.clients
        where (p.name == clients.name)
        select p).Count();

    if (count1 > 0)
        throw new ApplicationException("Your name already exist in the database");

    int count2 = (from p in context.clients
        where (p.email == clients.email)
        select p).Count();

    if (count2 > 0)
        throw new ApplicationException("Your e-mail already exist in the database"); 
}

这是个好策略还是坏策略?如果不是,那有什么更好的方法呢?

共有3个答案

赖浩荡
2023-03-14

实际上,您应该使用Exctive在应用程序中通过派生来创建自定义异常。不过,您也应该阅读这个答案。

对于您来说,特定的示例案例参数验证应该抛出ArgumentException,如果它不存在,那么您可以为此创建一个从Exception类派生的自定义类。

容俊豪
2023-03-14

在您的代码示例中,您最好抛出一个ArgumentNullExctive它更有意义。

对于有效电子邮件的最后一次检查,最好是ArgumentExctive或继承自Argument异常的自定义异常类。

 public void update(string name, string email)
    {
        if (string.IsNullOrEmpty(name))
        {
            throw new ArgumentNullException(nameof(name), "Type your name");
        }

        if (string.IsNullOrEmpty(email))
        {
            throw new ArgumentNullException(nameof(email), "Type your e-mail");
        }

        if (isValidEmail(email))
        {
            throw new ArgumentException(nameof(name), "Invalid e-mail");
        }

        //Save in the database
    }
单于俊智
2023-03-14

从…起https://msdn.microsoft.com/en-us/library/System.ApplicationException:

您应该从异常类而不是应用异常类派生自定义异常。您不应该在代码中抛出应用异常,并且您不应该捕获应用异常,除非您打算重新抛出原始异常。

一个简单的原因是。NET中还有其他从<代码>应用异常 派生的异常类。如果您在代码中抛出<代码>应用异常 并稍后捕获它,您也可能捕获可能破坏您的应用程序的派生异常。

 类似资料:
  • 我试图重用plt.plot()返回的线2D对象,而不是再次生成情节。 一个是Line2D对象,我在下面尝试重用它。 但是,这会导致运行时错误: RuntimeError:无法将单个艺术家放入多个图形中 我试图找出如何在其他单元格/其他地方重用由绘图函数返回的对象。使用先前返回的Line2D对象绘制图形而不再次运行或再次使用plt.plot(x,y)的正确方法是什么?

  • 我有一个带有ID,姓名和地址字段的员工类。如果两个雇员的 ID 和姓名完全相同,则认为他们是一样的。现在我有一个员工列表,现在我的任务是收集重复的员工。 这是我的员工类代码,带有基于id和name字段重写的hascode和equals方法。 现在我有这个代码可以找到重复的员工 这段代码运行良好,并在我的集合中给出了id为1的雇员。 如何使用Java 8 lamda和streams执行相同的操作?在

  • 在准备数据分析师面试问题时,我发现“使用熊猫在“一行”中找到所有重复的电子邮件(不是唯一的电子邮件)。” 我最好的不是一行,而是三行: 后一个注释后面的第二个代码块是否可以压缩成一行代码,避免使用临时变量< code>results?

  • 我有一个至少 600,00 行的 excel 文件(大小各不相同)。我想用熊猫获取特定列的所有重复项。 这是我到目前为止尝试过的: 然而,我得到的结果不是重复的,我不确定我可能做错了什么。有没有更有效的方法来解决这个问题?

  • 我试图将类型转换为布尔值。所以我就这么做了: 但是不是布尔值,它只包含值。然而,当我尝试这个: 返回一个布尔值,该值为false。 我是否遗漏了一些关于“as”演员的内容? 哪一个是正确的转换为布尔值?