2016-01-28 14 views
10

Tạo một thông tin văn hóa với es-CA, mà rõ ràng là không chính xácnên ném một ngoại lệ, nhưng không còn làm.không hợp lệ CultureInfo không còn ném CultureNotFoundException

Điều này trước đây đã ném CultureNotFoundException: new CultureInfo("es-CA"). Nó bây giờ dường như rơi trở lại es với một "Không xác định miền địa phương". Mặc dù, làm một cái gì đó như xy-ZZ cũng hoạt động, mà nó khá kỳ quặc?

Tại sao điều này không còn ném ngoại lệ? Điều này có thay đổi trong phiên bản .NET gần đây không?

Cập nhật 1

Các tài liệu đề cập đến sau đây:

nếu hệ thống điều hành không hỗ trợ mà văn hóa, và nếu tên không phải là tên của một nền văn hóa bổ sung hoặc thay thế, phương thức ném ngoại lệ CultureNotFoundException.

Kiểm tra điều này trên Windows 7, nó ném CultureNotFoundException nhưng trên Windows 10 nó không loại trừ ngoại lệ.

+0

Nó phải tồn tại trên máy của bạn, vì hành vi không thay đổi (https://msdn.microsoft.com/en-us/library/ky2chs3h(v=vs.110).aspx). – BalinKingOfMoria

+0

@BalinKingOfMoria, tôi nói rằng nó ** không ** ném một ngoại lệ, mà nó nên. Văn hóa hoặc địa phương không tồn tại trên máy của tôi. –

+0

Tôi biết, nhưng tôi chỉ muốn cho bạn biết rằng các tài liệu nói rằng nó vẫn hoạt động theo cách đó. – BalinKingOfMoria

Trả lời

2

Bây giờ, hãy thêm câu trả lời dựa trên các nhận xét.

Do những thay đổi trong thiết kế Windows, giờ đây không còn "văn hóa không hợp lệ" nếu tên khớp với BCP-47, vì vậy thay vì ném ngoại lệ .NET Framework/.NET Core chấp nhận văn hóa mới.

Bạn có thể tham khảo the GitHub discussion, và dưới đây trích dẫn,

Như khuôn khổ phụ thuộc vào hệ điều hành để nhận được các nền văn hóa, các hệ điều hành đang chuyển sang mô hình bất kỳ tên văn hóa BCP-47 có hiệu lực thậm chí hệ điều hành không hỗ trợ. ví dụ, Windows 10 đang hỗ trợ bất kỳ tên văn hóa được thiết lập tốt nào ngay cả khi hệ điều hành không có dữ liệu thực sự cho văn hóa như vậy. ví dụ: nếu cố gắng tạo văn hóa "xx-XXXX" trong Windows 10, nó sẽ thành công. xem xét điều đó, nó không có ý nghĩa để có liệt kê văn hóa như bất kỳ bộ chúng tôi trở lại không có nghĩa là đây là những nền văn hóa chỉ được hỗ trợ . xem xét vấn đề của bạn, bạn có thể giải quyết được sự cố là . nếu thực sự muốn có cách tốt hơn, chúng tôi có thể xem xét một cái gì đó như CultureInfo.TryGetCulture() nhưng như tôi đã nói trước đây di chuyển về phía trước hầu hết mọi nền văn hóa sẽ hợp lệ.

+0

Xin chào, tôi đã gặp rắc rối về một thử nghiệm đơn vị của tôi bắt đầu thất bại. Nếu phân tích cú pháp "không hợp lệ-văn hóa" được coi là hợp lệ. Tuy nhiên, nếu wikipedia (https://en.wikipedia.org/wiki/IETF_language_tag#Syntax_of_language_tags) là chính xác thì đây vẫn là văn hóa không hợp lệ. Dù sao, cảm ơn cho các bài trả lời. Tôi đã học được rằng chúng ta phải cuộn xác nhận của chính mình cho nền văn hóa của mình. –

Các vấn đề liên quan