Можно ли делать «поток управления данными» во время инициализации класса в VB.NET? - PullRequest
0 голосов
/ 07 марта 2019

В приведенном ниже коде я попытался вставить оператор 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 Ответ

3 голосов
/ 07 марта 2019

Вы абсолютно можете выбросить исключение, если вам передан неверный аргумент..NET Framework по этой причине определяет класс исключений ArgumentException .

Это особенно верно в случае библиотеки.Это должно быть до вызывающего кода для обработки исключения соответствующим образом.Если это приложение с графическим интерфейсом, то оно может показать сообщение пользователю.Если это служба Windows, то логирование может быть более подходящим.Библиотека не должна делать предположений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...