Err.Number (VB6 против C #) - PullRequest
       1

Err.Number (VB6 против C #)

5 голосов
/ 17 сентября 2010

Я использовал мастер Artinsoft VB6 для .NET для преобразования приложения VB6 в C #, и я получаю предупреждение об обновлении в любом месте, где ранее использовался Err.Number;

// UPGRADE_WARNING: (2081) Err.Number имеет новое поведение.

Преобразованный код относится к;

Microsoft.VisualBasic.Information.Err().Number

Мне не повезло выяснить, в чем разница. Кто-нибудь знает, что это может быть, или безопасно игнорировать это предупреждение?

UPDATE

Для любого, кто наткнется на этот вопрос в будущем - слово предупреждения; Продолжать использовать Err.Number в приложении C # .NET небезопасно. Свойство по-прежнему доступно, однако оно не заполняется после ошибок, как ожидалось. Единственный случай, когда он заполняется, как и ожидалось, происходит, если ошибка происходит от компонента COM.

Нормальные ошибки, например Доступ к БД, операции ввода-вывода и т. Д. Не будут давать никакого значения Err (). Number, и поэтому его использование, к сожалению, должно быть изменено.

Как ни странно, в VB .NET он по-прежнему работает должным образом, поэтому, возможно, об этом следует помнить при принятии решения о целевом языке для конвертации.

Ответы [ 3 ]

3 голосов
/ 25 сентября 2010

В основном VB.NET поддерживает свойство Err.Number, и оно работает почти так же, как и в VB6, однако при обновлении до C # Microsoft.VisualBasic.Information.Err (). Число заполняется неправильно, и на это не стоит полагаться.

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

Вы должны преобразовать все использования Err.Number для исключений .NET и изменить логику для правильного поведения при структурированной обработке ошибок.

привет

1 голос
/ 18 сентября 2010

Описание VB6 Err.Number от октября 2000 MSDN:

Returns or sets a numeric value specifying an error. Number is the Err object's default property. Read/write.

Описание VB.NET Err.Number от MSDN :

Returns or sets a numeric value specifying an error. Read/write.

Замечания MSDN за октябрь 2000 года дословно копируются в онлайн-версию для VB.NET, включая пример.Кажется, между ними нет ничего особенного.

0 голосов
/ 18 сентября 2010

Может быть, используемые цифры изменились?

...