Özel Durum İşleme (RPC)
RPC, Özel durum işleme için Windows API ile aynı yaklaşımı kullanır.
RpcTryFinally / RpcFinally / RpcEndFinally yapısı Windows try-finally deyimine eşdeğerdir. RPC özel durum yapısı RpcTryExcept / RpcExcept / RpcEndExcept, Windows try-except deyimine eşdeğerdir.
RPC özel durum işleyicilerini kullandığınızda, istemci tarafı kaynak kodunuz taşınabilir. Her platform için sağlanan farklı RPC üst bilgi dosyaları, her platform için rpctry ve RpcExcept makrolarını çözümler. Windows ortamında, bu makrolar doğrudan Windows try-finally ve try-except deyimlerine eşlenir. Diğer ortamlarda, bu makrolar özel durum işleyicilerinin platforma özgü diğer uygulamalarıyla eşler.
Bu yapılar tarafından tetiklenen olası özel durumlar, RPC işlevleri tarafından döndürülen hata kodları kümesini ve RPC_S_ ve RPC_X ön eklerini ve Windows tarafından döndürülen özel durumlar kümesini içerir. Ayrıntılar için bkz. RPC Dönüş Değerleri.
rpctry ve RpcExcept makroları özel durumları işlemek için özelleştirilebilir platformdan bağımsız bir yol sağlarken, Windows Vista'da ve Windows'un sonraki sürümlerinde, RpcExceptionFilter özel durumları işlemenin önerilen yoludur. En yaygın yapılandırılmış özel durumların çoğunu yakalamak için özel filtrelerin yazılması gerekmez; ancak özel özel durum filtreleri için rpcexcept gerekir.
Sunucu uygulamasında, sunucu saplamasında ve sunucu çalışma zamanı kitaplığında (aktarım katmanının üzerinde) oluşan özel durumlar istemciye yayılır. Sunucu taşıma düzeyinden hiçbir istisna yayılmaz. Bir sunucu yordamının RPC çalışma süresine hata döndürmesi için önerilen yöntem bir özel durum oluşturmaktır. Sunucu yordamı, sunucu yordamları arasında hataları iletmek için uygun olan yöntemleri kullanabilir, ancak uzak yordamı yürütmesini engelleyen bir hatayla karşılaşırsa, yalnızca sunucu yordamının hata olarak tanıdığı bir değeri RPC'ye döndürmek yerine, temizleme işleminden sonra ve RPC çalışma süresine dönmeden önce bir özel durum oluşturması gerekir.
Aşağıdaki şekilde, özel durumların sunucudan istemciye nasıl döndürülür gösterilmektedir.
RPC özel durum işleyicileri, Open Software Foundation-Distributed Computing Environment (OSF-DCE) özel durum işleme makroları TRY, FINALLYve CATCH'dan biraz farklıdır. Çeşitli satıcılar, OSF-DCE RPC işlevlerini Microsoft RPC işlevleriyle eşleyen dosyalar sağlar. Bu dosyalar arasında TRY , CATCH, CATCH_ALLve ENDTRYdahil. Bu üst bilgi dosyaları ayrıca RPC_S_* hata kodlarını OSF-DCE özel durum karşılıkları olan rpc_s_* ile eşler ve RPC_X_* hata kodlarını rpc_x_* ile eşler. OSF-DCE taşınabilirlik için bu include dosyalarını kullanın. RPC özel durum işleyicileri hakkında daha fazla bilgi için bkz. rpcExceptionFilter, RpcExcept, RpcFinally. Windows özel durum işleyicileri hakkında daha fazla bilgi için bkz. Yapılandırılmış Özel Durum İşleme.