2013-05-22 28 views
22

Tôi không hiểu tại sao chúng ta cần phải phân biệt mã lỗi (std::error_code) và lỗi condition(std::error_condition), chúng có giống nhau không? Ưu điểm của điều kiện lỗi so với mã lỗi là gì?mã lỗi và điều kiện lỗi

Trả lời

11

Từ http://en.cppreference.com/w/cpp/error/error_condition

std :: error_condition là một mã lỗi nền tảng độc lập. Giống như std :: error_code, nó được xác định duy nhất bởi một giá trị số nguyên và một số std :: error_category, nhưng không giống như std :: error_code, giá trị không phải là phụ thuộc vào nền tảng.

Vì vậy, lợi thế là mã lỗi của bạn không cụ thể cho nền tảng mà bạn đang làm việc khi sử dụng std::error:condition.

Với một std::error_code

Mỗi đối tượng std :: error_code giữ một cặp mã lỗi có nguồn gốc từ hệ điều hành, hoặc một số giao diện ở mức độ thấp

Vì vậy, error_code sẽ tham khảo điều gì đó cụ thể cho nền tảng của bạn, một phần cứng, v.v.

Có thể thuận lợi khi sử dụng cả hai. error_condition là "trừu tượng di động", do đó sẽ là thông báo lỗi chung để cung cấp cho người dùng và error_code sẽ là thông tin phụ thuộc nền tảng sẽ hữu ích cho việc gỡ lỗi cụ thể.

Triển khai điển hình [của error_condition] chứa một thành viên dữ liệu nguyên (giá trị) và con trỏ tới std :: error_category.

+0

Có ai đã xem Jimbo và StoryTeller trong cùng một phòng cùng một lúc không? – user93353

+0

haha ​​yeah đó là một trong những tốt phải không? – Jimbo

7

Câu trả lời đơn giản nhất cho câu hỏi này tôi tìm thấy ở đây: http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html.

error_code lớp - biểu thị giá trị lỗi cụ thể được trả về bởi thao tác (chẳng hạn như cuộc gọi hệ thống). class error_condition - một cái gì đó mà bạn muốn kiểm tra và, có khả năng, phản ứng lại trong mã của bạn.

Tôi nghĩ rằng nó cũng áp dụng cho C++ 11.

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