我有一个带有抽象员工类的商业程序。此类有一个名为BaseSalary
的抽象属性,它将根据员工类型(出纳员,主管,经理等)在其派生类中实现。
我希望根据位置验证给定工资范围的BaseSalary
属性中的数据。
当工资与该职位工作的要求不符时,我应该抛出什么样的例外?
答案 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