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

时间:2014-07-26 14:38:35

标签: c# .net vb.net validation

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

我希望根据位置验证给定工资范围的BaseSalary属性中的数据。

当工资与该职位工作的要求不符时,我应该抛出什么样的例外?

2 个答案:

答案 0 :(得分:1)

我通常喜欢坚持框架提供的例外。对于您的情况,我会使用ArgumentOutOfRangeException来描述该值超出范围。

当然,您可以随时创建自定义XXXException,以防您想要描述更适合您网域的内容。

答案 1 :(得分:1)

不是抛出异常,而是在别处编写更多代码来捕获和处理它们,探索不允许超出范围值:

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