Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
VSPackages ve COM, hatalar için aynı mimariyi kullanır. SetErrorInfo ve GetErrorInfo işlevleri Win32 uygulama programlama arabiriminin (API) bir parçasıdır. Tümleşik geliştirme ortamındaki (IDE) herhangi bir VSPackage, hata bildirimi alırken zengin hata bilgilerini kaydetmek için bu genel Win32 API'lerini çağırabilir. Visual Studio SDK'sı, hata bilgilerini yönetmek için birlikte çalışma derlemeleri sağlar.
Birlikte çalışma yöntemleri
Kolaylık olması için IDE, SetErrorInfoWin32 API'lerini çağırmak yerine kullanmak üzere bir yöntemi sağlar. Yönetilen kodda kullanın SetErrorInfo. Hata iletisinin görüntülenmesi gereken düzeye bir hata HRESULT geldiğinde (bu genellikle bir IOleCommandTarget komut işleyicisi uygulayan nesnedir), IDE uygun ileti kutusunu görüntülemek için başka bir yöntem ReportErrorInfokullanır. Yönetilen kodda yöntemini kullanın ReportErrorInfo .
VSPackage uygulayıcısı olarak, COM nesneleriniz normalde uygular ISupportErrorInfo. Arabirim, ISupportErrorInfo zengin hata bilgilerinin çağrı zincirinde dikey olarak hareket etmesini sağlar. İşlemler veya iş parçacıkları arasında kullanılabilecek nesneler, zengin hata bilgilerinin çağırana doğru şekilde sıralandığından emin olmak için desteklemelidir ISupportErrorInfo .
VSPackage'larla ilgili olan ve düzenleyici fabrikaları, düzenleyiciler, hiyerarşiler ve sunulan hizmetler de dahil olmak üzere IDE'yi genişletmeye katılan tüm nesneler zengin hata bilgilerini desteklemelidir. IDE bu VSPackage nesnelerinin uygulamasını ISupportErrorInfogerektirmese de, her zaman teşvik edilir.
IDE, hata bilgilerini raporlamaktan ve bir IDE'ye her yayılışında HRESULT Visual Studio kullanıcısına görüntülemekle sorumludur. IDE aynı zamanda nesne oluşturmaya ErrorInfo yönelik mekanizmadır.
Genel yönergeler
VSPackage uygulamanızın SetErrorInfo içindeki hataları ayarlamak ve raporlamak için ve ReportErrorInfo yöntemlerini de kullanabilirsiniz. Ancak genel bir kural olarak, VSPackage'ınızdaki hata iletilerini işlemeye yönelik şu yönergeleri izleyin:
VSPackage COM nesnelerinizde uygulama
ISupportErrorInfo.uygulayan IOleCommandTargetnesnelerde yöntemini çağıran SetErrorInfo bir hata raporlama mekanizması oluşturun.
IDE'nin yöntemi aracılığıyla kullanıcılara hata görüntülemesine ReportErrorInfo izin verin.
IDE'de hata bilgileri
Aşağıdaki kurallar, Visual Studio IDE'de hata bilgilerinin nasıl işleneceğini gösterir:
Eski hata bilgilerinin kullanıcılara bildirilmediğinden emin olmak için savunma stratejisi olarak, yöntemini çağıran işlevlerin ReportErrorInfo önce yöntemini çağırması SetErrorInfo gerekir.
nullYeni hata bilgilerini ayarlayabilecek herhangi bir şeyi çağırmadan önce önbelleğe alınmış hata iletilerini temizlemek için iletin.Hata iletilerini doğrudan bildirmeyen işlevlerin yalnızca hata
HRESULTdöndüren yöntemi çağırmasına SetErrorInfo izin verilir. bir işleve girişte veya döndürürken S_OKöğesinin işaretinin temizlenmesineErrorInfoizin verilebilir. Bu kuralın tek istisnası, bir çağrının alıcı tarafın açıkça kurtarabileceği veya güvenle yoksayabileceği bir hataHRESULTdöndürmesidir.Bir hatayı
HRESULTaçıkça yoksayan herhangi bir taraf ile S_OKyöntemini çağırmalıdırSetErrorInfo. Aksi takdirde,ErrorInfobaşka bir taraf kendiErrorInfosağlamadan bir hata oluşturduğunda nesne yanlışlıkla kullanılabilir.Bir hataya neden olan tüm yöntemlerin zengin hata
HRESULTbilgileri sağlamak için yöntemini çağırması SetErrorInfo teşvik edilir. DöndürülenHRESULTözelFACILITY_ITFbir hataysa, uygunErrorInfobir nesne sağlamak için yöntemi gereklidir. Döndürülen hata standart bir sistem hatasıysa (örneğin, E_OUTOFMEMORY, E_ABORT, E_INVALIDARG, E_UNEXPECTEDvb.) yöntemi açıkça çağırmadan SetErrorInfo hata kodunu döndürmek kabul edilebilir. Savunma kodlama stratejisi olarak, bir hataHRESULT(sistem hataları dahil) oluştururken, hatanın SetErrorInfo daha ayrıntılı bir şekilde açıklanmasıylaErrorInfoher zaman yöntemini çağırın.nullBaşka bir çağrıdan kaynaklanan bir hata döndüren tüm işlevlerin, içinde başarısız olan çağrıdan
HRESULTalınan bilgileri nesnesini değiştirmeden geçirmesiErrorInfogerekir.