Ваш обработчик исключений правильно перехватывает SQLException
.
Проблема в следующей строке в вашем обработчике:
Throw New Exception(MsgBox(ex.Message))
Если вам нужно окно сообщения, просто используйте
MsgBox(ex.Message)
Если вы хотите всплыть исключение, вы должны использовать строку
Throw
Не помещайте ex
в конце броска, так как это создаетновое исключение (в частности, полная трассировка стека) вместо того, чтобы перебрасывать старое, маскируя тем самым некоторые детали актуальной проблемы.
Кроме того.Если вы решите повторно сгенерировать исключение, вам нужно будет перехватить его снова где-нибудь в стеке, иначе вы все равно получите необработанные сообщения об исключении.