c# - 我应该在数据验证期间抛出什么异常

标签 c# .net vb.net validation

<分区>

我有一个带有抽象员工类的商业程序。该类有一个名为 BaseSalary 的抽象属性,根据员工类型(收银员、主管、经理等)在其派生类中实现。

我想根据职位为给定的薪水范围验证 BaseSalary 属性中的数据。

当工资不符合该职位工作的要求时,我应该抛出什么样的异常?

最佳答案

与其抛出异常,然后在别处编写更多代码来捕获和处理它们,不如探索根本不允许超出范围的值:

Public Class Waitress
    Inherits Employee

    Public Sub New
       MyBase.GetsTips = True
       ' do other stuff including class specific params from wherever
       MyBase.MinSalary = minsalary from whereever you store it

       ' or maybe.....
       MyBase.MaxSalary = SalaryClass.GetMax(enumEmp.Waitress)

    End Sub
End Class

别处

If newSalary >= myWaitress.MinSalary AndAlso
      newSalary <= myWaitress.MaxSalary Then

     myWaitress.Salary = newSalary
End IF

在现实世界中,范围通常比简单地按部门划分更为复杂。除了部门之外,可能还有培训要求、薪资等级、任期要求等。在这种情况下,您可能有一个 Salary 类来帮助确定这个女服务员的正确范围(基于培训等),而不仅仅是任何女服务员:

If newSalary >= SalaryClass.GetMin(myWaitress) AndAlso
          newSalary <= SalaryClass.GetMax(myWaitress) Then

     myWaitress.Salary = newSalary
Else
     ' tell user that is an invalid amount
End IF    

关于c# - 我应该在数据验证期间抛出什么异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972133/

相关文章:

c# - 映射具有不同属性的两个不同对象

C# 字符串资源值作为枚举字符串部分值?

c# - 使用 T4 和 C# 在运行时编译动态代码

c# - 创建一个方法以返回另一个方法的执行时间

.net - 使用 VB.NET 窗口窗体中文本框中的占位符

c# - DbContext.Database.Migrate() 方法在哪里?

c# - 在虚拟方法上使用 OpCodes.Call 是否安全?

c# - 我应该使用构造函数注入(inject)还是 IoC.Resolve?

正则表达式检查字符串是否是由逗号分隔的字母数字或单个字母数字字符串

c# - 如何使用或不使用导航属性进行 Linq 多对多连接