Bilinmeyen Hataları İşleme

Durum kodunun yalnızca yasal olarak iade edilebilir olarak tasdik edilen bir arabirim yönteminin uygulanmasından döndürülmesi yasaldır. Bu kuralın gözlemlenmemesi, döndürülen hata kodu değerleri ile uygulama tarafından tasdik edilen değerler arasında çakışma olasılığını davet eder. Dahili olarak çağrılan işlevlerden hata kodları yayılırken bu olası soruna özellikle dikkat edin.

Arabirimleri çağıran uygulamalar, döndürülen bilinmeyen hata kodlarını (başarı kodunun aksine) E_UNEXPECTED ile eş anlamlı olarak ele almalıdır. Bilinmeyen hata kodlarını işlemeye yönelik bu uygulama, COM tanımlı arabirimlerin ve işlevlerin istemcileri tarafından gereklidir. Tipik programlama uygulaması birkaç belirli hata kodunu ayrıntılı olarak işlemek ve geri kalanını genel olarak işlemek olduğundan, beklenmeyen veya bilinmeyen hata kodlarını işleme gereksinimi kolayca karşılanır.

Bir arabirim yöntemi çağrılırken olası tüm hataların işlenmesi önemlidir. Bunun yapılmaması uygulamanızın kilitlenmesine, verileri bozulmasına veya güvenlik açıklarına karşı savunmasız hale gelmesine neden olabilir. Aşağıdaki kod örneği bilinmeyen hataları işlemenin önerilen yolunu gösterir:

HRESULT hr; 
hr = xxMethod(); 
 
switch (GetScode(hr))  
{ 
    case NOERROR: 
      // Method returned success. 
      break; 
 
    case x1: 
      // Handle error x1 here.
      break; 
 
    case x2: 
      // Handle error x2 here.
      break; 
 
    case E_UNEXPECTED: 
    default: 
      // Handle unexpected errors here. 
      break; 
} 
 

Aşağıdaki hata denetimi genellikle özel bir şey döndürmeyen yordamlarla (S_OK veya beklenmeyen bir hata dışında) kullanılır:

if (xxMethod() == NOERROR) 
{
    // Handle success here.
} 
else 
{
    // Handle failure here.
} 

COM'da hata işlemesi