我想知道,当用户违反某些业务规则时,是否建议使用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");
}
这是个好策略还是坏策略?如果不是,那有什么更好的方法呢?
实际上,您应该使用Exctive
在应用程序中通过派生来创建自定义异常。不过,您也应该阅读这个答案。
对于您来说,特定的示例案例参数验证应该抛出ArgumentException
,如果它不存在,那么您可以为此创建一个从Exception
类派生的自定义类。
在您的代码示例中,您最好抛出一个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
}
从…起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”演员的内容? 哪一个是正确的转换为布尔值?