Вы успешно создали пользовательский тип исключения (хотя простое обращение к нему Exception
может привести к путанице, вам следует дать ему более конкретное c имя). Но ничто не выбрасывает ваш тип исключения. Ни один из встроенных. NET -кодов не был создан с учетом вашего пользовательского исключения , так что ничто не будет выбрасывать этот тип.
Ваш код может бросить свой тип исключений. Например, создание исключения на основе некоторого условия:
Try
If someCondition Then
Throw New Exception()
End If
Catch ex As Exception
ex.Alert("Yo")
End Try
Обычно что-то подобное происходит глубже в стеке вызовов, например, в вызываемом вами методе, а не на том же уровне, что и Try/Catch
здесь. (Примите во внимание общий совет, что не следует использовать исключения для потока управления, что является своего рода тем, что происходит в этом надуманном примере.)
Но дело в том, что ваш код будет бросать ваш пользовательский исключение, встроенный. NET код, конечно, не будет делать это.
Кроме того, соединение типа исключения с MsgBox
эффективно связывает его с определенной технологией пользовательского интерфейса c. Это может быть хорошо для ваших нужд, но это смешанные проблемы, которые, как правило, не должны смешиваться. Само исключение должно просто содержать информацию о проблеме, исключение , обрабатывающее logi c, должно обрабатывать отображение этой информации, или ее регистрацию, или любым способом реагирования на проблему.
В настоящее время этот пользовательский тип исключений ничего не добавляет к информации о проблеме, он только соединяется с пользовательским интерфейсом. Поэтому, когда вы рассматриваете его использование ... Все, что он делает, это заменяет MsgBox
, но делает это только в тех местах, где вы также можете использовать MsgBox
, так что он фактически ничего не выигрывает. В долгосрочной перспективе вы можете начать в неправильном направлении с точки зрения эффективной обработки исключений.