Как правильно использовать подпрограммы и функции с обработкой ошибок? - PullRequest
0 голосов
/ 12 июня 2019

Я написал систему тикетов для компании, в которой я работаю. Мы работаем над этим программным обеспечением более года. В настоящее время я занимаюсь обновлением этого программного обеспечения, чтобы включить новую форму запроса на техническое обслуживание. Я полностью начал все с нуля и запрограммировал все гораздо лучше, чтобы никогда не использовать один и тот же код дважды. У меня уже более трех тысяч строк кода, и я столкнулся с проблемой. Чтобы снова использовать код, я помещаю его в подпрограмму или функцию с параметрами. В этих вспомогательных и функциональных блоках я использую try catch для обработки ошибок. Проблема в том, что я использую эти функции повсеместно в приложении, например, на заставке. Если что-то происходит с ошибкой на заставке, первая проблема заключается в том, что сообщение будет автоматически закрыто, поскольку заставка отображается только в течение нескольких секунд. Вторая проблема, с которой я столкнулся, это то, что если вы не нажмете кнопку OK на ошибке достаточно быстро, прежде чем закроется экран-заставка, приложение полностью зависнет. Есть ли лучший способ сделать это?

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

Private Sub Splash_Screen_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

## Splash screen Code

## My added code:
Try
'Most of these functions also have a try catch block.
Public_Functions.GetApplicationSettings(Public_Functions.SQL_ApplicationSettingsTable)
Catch EX As Exception

Public_Functions.ShowErrorBox("Unable to load application settings!", EX.Message, MethodPath:=Public_Functions.GetMethodPath())
        End Try

End Sub

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

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

1 Ответ

0 голосов
/ 14 июня 2019

Я на самом деле исправил проблему, которая у меня была. Вместо того, чтобы использовать заставку для загрузки некоторых вещей, я просто добавил промежуточную форму, которая загружает все. Я попытался выяснить, как заставить заставку ждать, пока мои команды не будут выполнены, но я не смог найти ничего, кроме изменения минимального времени отображения. Мое приложение все еще показывает ошибку для каждого сабвуфера или функции, но я не уверен, как обойти это. Например, если определенного пользователя нет в группах, в которых он должен находиться в AD, он несколько раз получит сообщение о том, что не может подключиться к SQL. У меня есть много подпрограмм или функций, которые извлекаются из SQL, которые начинаются с оператора SQL connect. Он покажет ошибку соединения и ошибку для каждой из этих подпрограмм или функций, но пока они в группе, все хорошо.

...