Bagikan melalui


Menangani Kesalahan yang Tidak Diketahui

Hukum untuk mengembalikan kode status hanya dari implementasi metode antarmuka yang dikenai sanksi sebagai dapat dikembalikan secara hukum. Kegagalan untuk mengamati aturan ini mengundang kemungkinan konflik antara nilai kode kesalahan yang dikembalikan dan yang dikenai sanksi oleh aplikasi. Perhatikan masalah potensial ini saat menyebarkan kode kesalahan dari fungsi yang dipanggil secara internal.

Aplikasi yang memanggil antarmuka harus memperlakukan kode kesalahan yang dikembalikan yang tidak diketahui (dibandingkan dengan kode keberhasilan) sebagai identik dengan E_UNEXPECTED. Praktik penanganan kode kesalahan yang tidak diketahui ini diperlukan oleh klien antarmuka dan fungsi yang ditentukan COM. Karena praktik pemrograman umum adalah menangani beberapa kode kesalahan tertentu secara rinci dan memperlakukan sisanya secara generik, persyaratan penanganan kode kesalahan yang tidak terduga atau tidak diketahui ini mudah terpenuhi.

Penting untuk menangani semua kemungkinan kesalahan saat memanggil metode antarmuka. Kegagalan untuk melakukannya dapat menyebabkan aplikasi Anda crash, merusak data, atau menjadi rentan terhadap eksploitasi keamanan. Sampel kode berikut menunjukkan cara yang direkomendasikan untuk menangani kesalahan yang tidak diketahui:

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; 
} 
 

Pemeriksaan kesalahan berikut sering digunakan dengan rutinitas yang tidak mengembalikan sesuatu yang istimewa (selain S_OK atau beberapa kesalahan tak terduga):

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

Penanganan Kesalahan di COM