在VB.NET中的类初始化期间可以执行“数据控制流”吗?

时间:2019-03-07 14:48:55

标签: .net vb.net oop

在下面的代码中,我尝试将End语句插入到if..then块内,以检查传递给构造函数的温度值是否在-20和+50度之间,如果不满足要求,则最终结束程序执行遇见。 Visual Studio告知“ End语句不能在类库项目中使用”。检查传递给类构造函数的参数正确性的良好实践/方法是什么? (我已经读到,不应将异常用于执行数据控制流程,因为应该将异常用于解决“意外行为”,在这种情况下,我应该期望用户可以尝试在该类的允许范围之外插入一个值才有意义)。

谢谢

Public Class WaterGlycoleMixture
     Implements ICoolingFluid

     Private _temperature As Double
     Private _glycolePercentage As Double

     Public Sub New(temperature As Double, glycolePercentage As Double)

          If -20 < temperature < 50 Then
               MessageBox.Show("Error: Temperature Range must be between -20 e +50°C")
                End
          End If

          _temperature = temperature
          _glycolePercentage = glycolePercentage
     End Sub


    'Some more methods and properties here




End Class

1 个答案:

答案 0 :(得分:3)

如果传递了错误的参数,则绝对可以引发异常。正是由于这个原因,.NET Framework定义了股票异常类ArgumentException

对于图书馆尤其如此。应该由调用代码以适当的方式处理异常。如果它是GUI应用程序,则它可以向用户显示一条消息。如果它是Windows服务,则记录可能更合适。图书馆不应做任何假设。