Как поставить обработчики ошибок во все функции vb

У нас есть несколько проектов vb. Мы хотим поместить обработчики ошибок во все функции, а обработчик ошибок должен записывать в файл. Существуют ли какие-либо доступные инструменты - мы рассмотрели codemart и vbwatch.


person Community    schedule 21.01.2009    source источник


Ответы (3)


Вот бесплатная программа:
http://wareseeker.com/Software-Development/automatic-error-handling-pro-1.1.0.zip/238557

а вот исходный код для самостоятельного выполнения:
http://www.nigelrivett.net/VB/VBAdErrorHandling.html

person gkrogers    schedule 21.01.2009

Часто рекомендуется MZ-Tools, бесплатный и очень простой в установке:

Поддерживаемые инструменты разработки Майкрософт

  • Visual Studio 2008 (кроме выпусков Express)
  • Visual Studio 2005 (кроме выпусков Express)
  • Visual Studio .NET 2003
  • Visual Studio .NET 2002
  • Visual Basic 6.0
  • Visual Basic 5.0
  • Редактор VBA (Office 2000-2007 или другие)

Поддерживаемые языки программирования

  • Визуальный С#
  • Visual Basic .NET
  • Visual C++ (частичная поддержка, большинство возможностей)
  • Визуальный J#
  • Visual Basic 6.0 и 5.0
  • Visual Basic для приложений (VBA)
person Fionnuala    schedule 21.01.2009
comment
Любой, кто программирует в vb6, обязательно должен использовать это дополнение, а не только из-за его полезности при добавлении кода и номеров строк для обработки ошибок. - person kjack; 22.01.2009
comment
ИМХО VB6 не устанавливается, пока вы не установили MZTools. Это тоже бесплатно (Рему, вы можете отредактировать свой ответ и упомянуть об этом) - person MarkJ; 23.01.2009

Убедитесь, что вы протестировали производительность, прежде чем добавлять ее во все процедуры. Наше решение обработчика ошибок (VBRig) заметно повлияло на математические вычисления и перерисовку экрана в нашем приложении CAD/CAM. Это было неплохо написано, но добавление ведения журналов добавило сотни времени.

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

person RS Conley    schedule 21.01.2009
comment
Я бы подумал, что накладные расходы будут незначительными, если ваш код на самом деле не вызывает много ошибок. Что, я считаю, само по себе вызовет проблемы с производительностью. Предположительно, вы регистрировали только те ошибки, которые действительно происходят? - person MarkJ; 23.01.2009
comment
Мои приложения CAD/CAM выполняют 3D-расчеты для развертывания форм, а также динамическое рисование экрана. Незначительные накладные расходы на процедуры ведения журналов в Visual BASIC 6 составляют достаточно, чтобы заметно замедлить процесс. - person RS Conley; 26.01.2009
comment
Как и многое в программировании это не абсолют. Вы должны использовать свое лучшее суждение. - person RS Conley; 26.01.2009
comment
В Visual Basic 6 вам нужно вручную регистрировать каждую процедуру, если вам нужна трассировка стека. - person RS Conley; 26.01.2009
comment
Мы помещаем обработчик ошибок в каждую подпрограмму, которая перехватывает ошибку, а затем снова вызывает ее, добавляя имя подпрограммы к сведениям об ошибке. Последняя подпрограмма (обработчик событий или подчиненная функция Main) фактически регистрирует ошибку. Результат: трассировка стека, построенная только при возникновении ошибок. В противном случае штраф за время выполнения отсутствует. - person MarkJ; 26.01.2009
comment
В качестве альтернативы (если вы хардкорный) похоже, что вы можете создавать трассировки стека в VB6 без штрафа во время выполнения, как это (я не пробовал): codeproject.com/KB/exception/RealTimeDebugger.aspx - person MarkJ; 26.01.2009
comment
Ставим обработчик ошибок... это просто шикарно. Спасибо за чаевые. - person RS Conley; 26.01.2009
comment
@MarkJ: согласны ли вы с тем, что большинство приложений VB6 углубляются только на 1 или 2 уровня в стек вызовов, поэтому наличия обработчиков ошибок только в событиях обычно достаточно, чтобы понять, в чем проблема? - person CJ7; 02.05.2012
comment
@CraigJ Нет необходимости делать такое обобщение. Очевидно, что мои знания наиболее применимы к приложениям VB6, над которыми я работаю сама. Они уходят намного глубже, чем на 1 или 2 уровня. Вы лучше всех знаете приложения, над которыми вы работаете. Для тех может не подойти. Используйте собственное суждение. - person MarkJ; 02.05.2012