2010-09-17 25 views
5

Tôi đã sử dụng thuật sĩ VB6 để .NET của Artinsoft để chuyển đổi ứng dụng VB6 thành C# và tôi nhận được cảnh báo nâng cấp ở bất kỳ nơi nào mà Err.Number đã được sử dụng trước đó;Err.Number (VB6 so với C#)

// UPGRADE_WARNING: (2081) Err.Number có một hành vi mới.

Mã được chuyển đổi đang đề cập đến;

Microsoft.VisualBasic.Information.Err().Number 

Tôi chưa tìm thấy điểm khác biệt nào. Có ai biết nó có thể là gì không, hoặc có an toàn để bỏ qua cảnh báo này không?

CẬP NHẬT

Đối với bất cứ ai tình cờ qua câu hỏi này trong tương lai - một lời cảnh báo; KHÔNG an toàn để tiếp tục sử dụng Err.Number trong một ứng dụng C# .NET. Tài sản vẫn có sẵn, tuy nhiên nó không được điền sau các lỗi như mong đợi. Trường hợp duy nhất mà nó được cư trú như mong đợi là nếu lỗi đến từ một thành phần COM.

Lỗi thông thường, ví dụ: DB truy cập, hoạt động IO, vv sẽ không cung cấp cho bất kỳ giá trị để Err() Số, và do đó, việc sử dụng nó phải được tái cấu trúc không may.

Kỳ lạ, trong VB .NET, nó vẫn hoạt động như mong đợi, vì vậy có lẽ đây là điều cần lưu ý khi đưa ra quyết định về ngôn ngữ đích để chuyển đổi.

+0

Cựu ước: bạn có hài lòng với công việc mà VBUC đang làm không? – kjack

+1

@kjack: Nó chắc chắn là tiết kiệm rất nhiều công việc khó khăn trong quá trình chuyển đổi, nhưng có một số "quirks" trong chuyển đổi mô hình của nó mà có một số nhận được sử dụng để. Mặc dù vậy, về tổng thể, tôi có thể nói nó có thể đáng để sử dụng, nhưng đừng mong đợi bất kỳ phép lạ nào từ nó. –

+0

Cảm ơn vì điều đó, hiếm khi thấy các đánh giá về những sản phẩm này vì một số lý do. – kjack

Trả lời

2

về cơ bản VB.NET có hỗ trợ cho thuộc tính Err.Number, và nó hoạt động khá giống với VB6, tuy nhiên khi nâng cấp lên C# thì Microsoft.VisualBasic.Information.Err(). Số không được điền chính xác, và bạn không nên dựa vào nó.

Trường hợp duy nhất mà số lỗi được đặt chắc chắn là khi lỗi được tạo bởi thành phần COM interop, trong trường hợp này bạn có thể kiểm tra số lỗi trong thành viên InnerException của ngoại lệ.

Bạn nên chuyển đổi tất cả các tập quán Err.Number cho các ngoại lệ .NET và sửa đổi logic để hoạt động đúng với xử lý lỗi có cấu trúc.

liên quan

1

Mô tả VB6 Err.Number từ tháng 10 năm 2000 MSDN:

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

Mô tả VB.NET Err.Number từ MSDN:

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

Các nhận xét từ tháng 10 2000 MSDN được sao chép từ cho từ trong phiên bản trực tuyến cho VB.NET bao gồm ví dụ. Dường như không có gì khác biệt giữa hai người.

+0

Đủ công bằng, tôi sẽ giả sử bây giờ tôi có thể tiếp tục sử dụng Err.Number như trước đây. Cảm ơn Corin. –

0

Có thể các số được sử dụng đã thay đổi?