2012-12-17 26 views
8

Tôi có một thư viện C++ cho mạng truyền thông mà tôi cần để cổng cho Mac, trước đây thư viện này đã được sử dụng trên Windows C++ ứng dụng.Object-C hoặc Objective C++ có thể xử lý ngoại lệ C++ không?

Dòng chảy của C++ Mạng Lib được dựa trên ngoại lệ trong trường hợp sai sót, thay vì trả lại mã lỗi hoặc sai sót cuối cùng ..

Bây giờ kể từ khi trên Mac chúng tôi sử dụng Objective-C/C++ cho các ứng dụng. Tôi cần phải có giao diện người dùng trong Objective-C/C++ nhưng lib được sử dụng cho các chức năng mạng lõi là cùng một C + + lib.

Vì vậy, câu hỏi của tôi là mục tiêu C có thể xử lý các trường hợp ngoại lệ được thực hiện bởi các cuộc gọi C++? nếu vậy, làm thế nào? nếu tôi không giải quyết nó thì sao? Hay chúng ta viết một trình bao bọc xung quanh các cuộc gọi C++ Lib và tiêu thụ các ngoại lệ và trả về mã lỗi?

Vui lòng thông báo, cách giải quyết ..

Trả lời

7

Miễn là bạn đang sử dụng iOS hoặc 64-bit runtime trên OS X, mọi thứ khá nhiều chỉ hoạt động. Bạn có thể viết thử/nắm bắt kiểu C++ và nó sẽ hoạt động như mong đợi, như @ try/@ catch. Lưu ý rằng bạn vẫn sẽ có hai kiểu riêng biệt, cho các ngoại lệ Objective-C và C++; hợp nhất duy nhất là special case trong đó catch(...) hoặc @catch(...) bắt được tất cả ngoại lệ, Mục tiêu-C hoặc C++. Đó là hữu ích một chút cho việc tập trung mã làm sạch của bạn, nhưng tất cả những gì bạn có thể làm với chính bản thân ngoại lệ là @thay nó lại một lần nữa.

Nhưng trong mọi trường hợp, các chương trình exceptions shouldn't be used for flow control in Objective-C (hoặc Mục tiêu-C++). Bạn thực sự nên cố gắng bẫy các ngoại lệ C++ khi chúng thoát khỏi thư viện được đề cập và chuyển đổi chúng thành một cơ chế thích hợp hơn, chẳng hạn như NSError. Đặc biệt, tránh cho phép bất kỳ thứ gì trong số đó tăng lên thông qua bất kỳ khung công tác của Apple hoặc bên thứ ba nào - hầu hết các khung như vậy không ngoại lệ an toàn cho các trường hợp ngoại lệ của Objective-C, cho phép một mình C++ và hậu quả không được xác định. các lỗi khác là có thể).

+0

Câu trả lời hay. Trường hợp ngoại lệ là một hiếm trong mã Objective-C tốt và mọi người có xu hướng quên rằng khi đến từ các ngôn ngữ khác. –

+2

Bạn có thể giải thích cách bắt mã số ném từ phía C++ không? –

-3

Câu trả lời đơn giản: có. Làm thế nào để làm nó? Có lẽ điều này link có thể giúp đỡ.

+3

Vui lòng không đăng câu trả lời chỉ có liên kết. Liên kết bạn đã đăng hiện đã chết, vì vậy câu trả lời này không hữu ích. –

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