WCF - Penanganan Pengecualian

Pengembang layanan WCF mungkin mengalami beberapa kesalahan tak terduga yang memerlukan pelaporan kepada klien dengan cara yang sesuai. Kesalahan semacam itu, yang dikenal sebagaiexceptions, biasanya ditangani dengan menggunakan blok coba / tangkap, tetapi sekali lagi, ini sangat spesifik teknologi.

Karena area perhatian klien bukan tentang bagaimana kesalahan terjadi atau faktor-faktor yang berkontribusi terhadap kesalahan, kontrak Kesalahan SOAP digunakan untuk mengkomunikasikan pesan kesalahan dari layanan ke klien di WCF.

Kontrak kesalahan memungkinkan klien untuk memiliki pandangan yang terdokumentasi tentang kesalahan yang terjadi dalam layanan. Contoh berikut memberikan pemahaman yang lebih baik.

Step 1 - Layanan kalkulator mudah dibuat dengan operasi pembagian yang akan menghasilkan pengecualian umum.

using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Runtime.Serialization;
usingSystem.ServiceModel;
usingSystem.Text;

namespace Calculator {
   // NOTE: You can use the "Rename" command on the "Refactor" menu to change 
   // the interface name "IService1" in both code and config file together.
   
   [ServiceContract]
   
   public interface IService1 {
      [OperationContract]
      int divide(int num1, int num2);
      // TODO: Add your service operations here
   }
}

Pengkodean untuk file kelas ditunjukkan di bawah ini -

Sekarang, ketika kita mencoba membagi angka 10 dengan nol, layanan kalkulator akan mengeluarkan pengecualian.

Pengecualian dapat ditangani dengan blok coba / tangkap.

Sekarang, ketika kita mencoba membagi bilangan bulat apa pun dengan 0, itu akan mengembalikan nilai 10 karena kita telah menanganinya di blok catch.

Step 2 - FaultException digunakan dalam langkah ini untuk mengkomunikasikan informasi pengecualian ke klien dari layanan.

public int Divide(int num1, int num2) { 
   //Do something 
   throw new FaultException("Error while dividing number"); 
}

Step 3- Dimungkinkan juga untuk membuat tipe kustom untuk mengirim pesan kesalahan menggunakan FaultContract. Langkah-langkah penting untuk membuat tipe kustom disebutkan di bawah -

Jenis ditentukan oleh penggunaan kontrak data dan bidang yang dimaksudkan untuk dikembalikan ditentukan.

Operasi layanan didekorasi oleh atribut FaultContract. Nama tipe juga ditentukan.

Sebuah contoh layanan dibuat untuk meningkatkan pengecualian dan properti pengecualian khusus ditetapkan.