Существует два основных класса исключений:
1) Системное исключение (например, потеря соединения с базой данных) или
2) Пользовательское исключение. (например, подтверждение ввода пользователя, «пароль неверен»)
Я считаю полезным создать свой собственный класс исключений пользователя, и когда я хочу выдать ошибку пользователя, я хочу, чтобы ее обрабатывали по-другому (т.е. ошибка ресурса, отображаемая пользователю), тогда все, что мне нужно сделать в моем основном обработчике ошибок, это проверить тип объекта:
If TypeName(ex) = "UserException" Then
Display(ex.message)
Else
DisplayError("An unexpected error has occured, contact your help desk")
LogError(ex)
End If