Больше, чем с исключениями

#vb.net #exception

#vb.net #исключение

Вопрос:

Мне нужно написать программу, которая указывает большую из двух переменных, используя исключения.

Я не уверен, что это приемлемый код. Я новичок в этом и попытался использовать этот код здесь:

 Class GreaterThan
Public Shared Sub Main()
    Try
        Dim Y As Integer = 12
        Dim X As Integer = 23
        If Y > X Then
            System.Console.WriteLine(Y)
        Else
            System.Console.WriteLine(X)
            Throw New Exception("Greater Than")
        End If
    Catch ex As Exception
        System.Console.WriteLine(ex.Message)
    End Try
End Sub
  

Завершить класс

Обычно я бы не использовал исключение, но меня попросили его использовать, я просто не уверен, какое исключение сработает лучше всего.

Ответ №1:

Я не уверен, в чем вопрос на самом деле. Ваш код кажется совершенно корректным. Было бы отображено: На 23 больше, чем

Вообще говоря; вы бы не хотели использовать исключение для обработки чего-то вроде сравнения целых чисел.

Существует множество способов освежевать кошку, но вы, возможно, захотите взглянуть на эти:

         Console.Write(If(Y > X, Y, X))

        Console.Write(Math.Max(X, Y))

        Console.Write(New Integer() {X, Y}.Max())
  

Наверное, я действительно не понимаю, чего вы пытаетесь достичь. Если вам придется использовать исключение, у меня может возникнуть соблазн сделать что-то вроде…

 If X > Y Then
    Throw New Exception(String.Format("{0} is greater than {1}", X, Y))
End If
  

Комментарии:

1. Я бы не использовал исключение, если бы мне не нужно было. Но поскольку меня попросили использовать одно, это моя попытка. Я бы сделал это по-другому, если бы не было необходимости в исключении.

2. Спасибо, я использовал это в своем коде и немного изменил его, но я думаю, что этого достаточно.

Ответ №2:

Я бы не стал использовать исключения в такой ситуации. Вместо этого сделайте что-то вроде этого:

 Public Shared Sub Main()
    Dim Y As Integer = 12
    Dim X As Integer = 23

    If Y > X Then
        System.Console.WriteLine(Y)
    Else
        System.Console.WriteLine(X)
        ' PERFORM ACTION BASED ON X > Y
    End If
End Sub
  

Вы также могли бы обернуть это в функцию, которая возвращает True или False в зависимости от того, что такое X и Y, но я думаю, что это немного излишне.

Комментарии:

1. @user678113 Обычно я бы тоже не стал использовать исключение, но меня попросили его использовать. Я хочу знать, является ли это допустимым.

2. Разве не все исключения являются допустимыми исключениями? Можете ли вы объяснить, что вы подразумеваете под «допустимым исключением»?

3. Под действительным я имел в виду, является ли это лучшим. Я знаю, что это не имеет особого смысла, но я не имею особого смысла. Мои мысли и объяснения запутанны.

Ответ №3:

Классу нравится, чтобы это делалось именно так:

  Class MyClient
   Public Shared Sub Main()
      Try
      Dim X As Integer = 11
      Dim Y As Integer = 12
      If X > Y Then
      System.Console.WriteLine("X is Greater")
      Else
      Throw New Exception("Y is Greater")
      End If
      Catch e As Exception
      System.Console.WriteLine(e.Message)
      End Try
    End Sub
End Class