Bagikan melalui


Penanganan Pengecualian (RPC)

RPC menggunakan pendekatan yang sama untuk penanganan pengecualian dengan Windows API.

Struktur RpcTryFinally / RpcFinally / RpcEndFinally setara dengan pernyataan try-finally Windows. Konstruksi pengecualian RPC RpcTryExcept / RpcExcept / RpcEndExcept setara dengan pernyataan try-except Windows.

Saat Anda menggunakan handler pengecualian RPC, kode sumber sisi klien Anda portabel. Berbagai file header RPC yang disediakan untuk setiap platform menyelesaikan makro RpcTry dan RpcExcept untuk setiap platform. Di lingkungan Windows, makro ini memetakan langsung ke pernyataan coba-akhirnya dan coba-kecuali Windows. Di lingkungan lain, makro ini dipetakan ke implementasi penangan pengecualian khusus platform lainnya.

Pengecualian potensial yang dimunculkan oleh struktur ini termasuk sekumpulan kode kesalahan yang dikembalikan oleh fungsi RPC dengan awalan RPC_S_ dan RPC_X dan serangkaian pengecualian yang dikembalikan oleh Windows. Untuk detailnya, lihat Nilai Pengembalian RPC.

Sementara makro RpcTry dan RpcExcept menyediakan cara platform-agnostik yang dapat disesuaikan untuk menangani pengecualian, di Windows Vista dan versi Windows yang lebih baru, RpcExceptionFilter adalah cara yang direkomendasikan untuk menangani pengecualian. Ini tidak mengharuskan filter kustom ditulis untuk menangkap banyak pengecualian terstruktur yang paling umum; namun, filter pengecualian kustom masih memerlukan RpcExcept.

Pengecualian yang terjadi di aplikasi server, stub server, dan pustaka run-time server (di atas lapisan transportasi) disebarkan ke klien. Tidak ada pengecualian yang disebarluaskan dari tingkat transportasi server. Metode yang disarankan untuk rutinitas server untuk mengembalikan kesalahan ke run time RPC adalah dengan melemparkan pengecualian. Rutinitas server dapat menggunakan metode apa pun yang sesuai untuk mengkomunikasikan kesalahan antara rutinitas server, tetapi jika mengalami kesalahan yang mencegahnya menjalankan prosedur jarak jauh, metode tersebut harus memunculkan pengecualian setelah dibersihkan dan sebelum kembali ke run time RPC, daripada mengembalikan nilai ke RPC yang hanya dikenali oleh rutinitas server sebagai kesalahan.

Gambar berikut menunjukkan bagaimana pengecualian dikembalikan dari server ke klien.

pengecualian dikembalikan dari server ke klien melalui runtime rpc masing-masing dari setiap komponen

Penangan pengecualian RPC sedikit berbeda dari makro penanganan pengecualian Open Software Foundation-Distributed Computing Environment (OSF-DCE) TRY, FINALLY, dan CATCH. Berbagai vendor menyediakan termasuk file yang memetakan fungsi OSF-DCE RPC ke fungsi Microsoft RPC, termasuk TRY, CATCH, CATCH_ALL, dan ENDTRY. File header ini juga memetakan kode kesalahan RPC_S_* ke rekan pengecualian OSF-DCE, rpc_s_*, dan memetakan kode kesalahan RPC_X_* ke rpc_x_*. Untuk portabilitas OSF-DCE, gunakan ini termasuk file. Untuk informasi selengkapnya tentang handler pengecualian RPC, lihat RpcExceptionFilter, RpcExcept, RpcFinally. Untuk informasi selengkapnya tentang penangan pengecualian Windows, lihat Penanganan Pengecualian Terstruktur.