7.1 Phát sinh các ngoại lệ.
Bạn cần chú ý rằng phương thức servant chỉ được phép đưa ra các ngoại lệ có trong danh sách các ngoại lệ đã được chỉ định. Điều này bao gồm tất cả các ngoại lệ của hệ thống CORBA bởi vì lớp cơ sở
CORBA::SystemException có trong tất cả các ngoại lệ servant.
Khi đang được thực hiện C++ bảo vệ phương thức servant khỏi bất cứ ngoại lệ nào không có trong danh sách chỉ định cho dù ngoại lệ đó được đưa ra trực tiếp hay gián tiếp từ phương thức servant.
Để đảm bảo các ngoại lệ được đưa ra từ các servant, ORB và skeleton phải chứa tất cả các lời gợi servant trong khối catch để bẫy các ngoại lệ CORBA hoặc không phải CORBA.
- Tất cả các ngoại lệ phải được đưa ra bằng phương thức servant bao gồm ngoại lệ CORBA do người dùng định nghĩa và ngoại lệ chung của C++ được bắt bởi CORBA và bị chuyển thành ngoại lệ.
7.2 Các ngoại lệ hệ thống (System Exception)
Phương thức servant có thể ném ngoại lệ CORBA: BAP_PARAM 1 trong các tham số có giá trị không mong đợi hoặc việc ném ngoại lệ CORBA: NO_MEMORY để báo rằng việc cấp phát cho tham số có độ dài thay đổi không thành công. Tuy nhiên ORB cũng sử dụng những ngoại lệ này để báo lỗi là nó xung đột trong khi cố gắng nhận yêu cầu hoặc trả lời yêu cầu. Khi client bắt lỗi hệ thống của CORBA trong trường hợp đó, nó không biết đâu là nguyên nhân bởi CORBA thay việc thi hành servant.
Để tránh lộn xộn giữa ORB và servant. Bạn nên tránh trực tiếp ném ngoại lệ ….CORB thay vào đó nên sử dụng ngoại lệ người dùng định nghĩa để báo lỗi . Điều này dẫn đến bạn phải xem xét các khả năng gây lỗi khi thiết kế giao tiếp IDL và khai báo các lỗi đó trong mỗi mệnh đề raise
Trên một bộ điều hợp đối tượng yêu cầu 1 đối tượng mà nó không tồn tại thì ứng dụng sẽ chờ đợi một ngoại lệ ….
7.3 Quản lí bộ nhớ và ngoại lệ
Khi phương thức servant loại bỏ một ngoại lệ ORB sẽ giải phóng bất cứ vùng nhớ nào mà nó cấp phát cho tham số vào và ra, …. Có tham số ra và giá trị trả về và sắp xếp các ngoại lệ cho để trả về client. Vì vậy phương thức servant phải cẩn thận giải phóng vùng nhớ mà nó đã cấp phát cho tham số ra hoặc giá trị trả về mà không bị phân khoảng bộ nhớ.
Sử dụng kiểu _var trong các phương thức servant để quản lý cấp phát động các thể hiện cho đến khi chúng trả về giá trị cho người gọi không gây rò rỉ tài nguyên chúng nhận được