Penanganan Pengecualian
Kelas RuleEngine memiliki properti CompensationHandlerInfo, yang pada gilirannya memiliki dua properti: CompensationHandler dan UserData. Properti CompensationHandler berjenis RuleEngineCompensationHandler, dan properti UserData berjenis Object. Definisi untuk RuleEngineCompensationHandler adalah sebagai berikut:
public delegate bool RuleEngineCompensationHandler(
Exception ex,
object userData
);
Konsumen mesin aturan menentukan handler dan data pengguna ke mesin aturan dengan menggunakan properti CompensationHandlerInfo dari kelas RuleEngine . Handler harus memiliki tanda tangan yang sama dengan delegasi RuleEngineCompensationHandler . Jika ada pengecualian run-time, mesin memanggil handler dan meneruskan pengecualian dan data pengguna yang telah ditentukan sebelumnya sebagai parameter ke handler. Jika handler mengembalikan true
, maka mesin aturan terus diproses. Jika tidak, mesin aturan membatalkan pemrosesan dan kembali ke pengguna dengan pengecualian asli. Seperti yang Anda lihat, Anda dapat menggunakan mekanisme penanganan pengecualian ini hanya jika Anda memanggil kebijakan dengan menggunakan metode RuleEngine.Execute .
Jika Anda menggunakan metode Policy.Execute untuk menjalankan kebijakan, Anda harus menggunakan blok try-catch untuk menangkap pengecualian apa pun yang dihasilkan oleh mesin aturan saat menjalankan kebijakan.
Jika Anda menggunakan bentuk Aturan Panggilan untuk menjalankan kebijakan, gunakan blok Catch Exception untuk bentuk Cakupan untuk menangkap pengecualian yang dimunculkan oleh mesin aturan saat menjalankan kebijakan.