Penanganan Kesalahan dan Laporan

PRADO menyediakan kerangka kerja penanganan kesalahan dan laporan lengkap berdasarkan pada mekanisme eksepsi dari PHP 5.

Kelas Eksepsi

Kesalahan yang terjadi dalam aplikasi PRADO dapat diklasifikasikan ke dalam tiga kategori: kesalahan yang disebabkan oleh penguraian naskah PHP, kode yang salah (seperti memanggil fungsi yang tidak didefinisikan, menyetel properti yang tidak dikenal), dan yang disebabkan oleh pemakaian yang tidak benar pada aplikasi Web oleh pengguna klien (seperti mencoba untuk mengakses halaman terbatas). PRADO tidak dapat berhadapan dengan kesalahan kategori pertama karena tidak dapat ditangkap dalam kode PHP. PRADO menyediakan sebuah hirarki eksepsi untuk berhadapan dengan kategori kedua dan ketiga.

Semua kesalahan dalam aplikasi PRADO digambarkan sebagai eksepsi. Basis kelas untuk seluruh eksepsi PRADO adalah TException. Ia menyediakan fungsionalitas internasionalisasi pesan bagi semua eksepsi sistem. Pesan kesalahan dapat diterjemahkan ke dalam bahasa yang berbeda tergantung pada preferensi bahasa browser pengguna.

Eksepsi muncul karena pemakaian yang tidak benar dari kerangka kerja PRADO yang diturunkan dari TSystemException, yang bisa berupa salah satu dari kelas eksepsi berikut:

Kesalahan karena pemakaian yang salah dari aplikasi Web oleh pengguna klien diturunkan dari TApplicationException.

Memunculkan Eksepsi

Memunculkan eksepsi dalam PRADO tidak berbeda dengan memunculkan eksepsi normal PJHP. Satu hal yang sama adalah untuk memunculkan eksepsi yang benar. Secara umum, eksepsi yang ditujukan untuk ditampilkan ke pengguna aplikasi harus menggunakan THttpException, sementara eksepsi yang ditampilkan bagi para pengembang harus menggunakan kelas eksepsi lain.

Penangkapan Kesalahan dan Pelaporan

Eksepsi muncul selama menjalankan aplikasi PRADO ditangkap oleh modul System.Exceptions.TErrorHandler. Template output berbeda dipakai untuk menampilkan eksepsi yang ditangkap. THttpException dianggap berisi pesan kesalahan yang ditujukan untuk aplikasi pengguna akhir dan kemudian menggunakan grup template khusus. Untuk semua eksepsi lainnya, template umum ditampilkan seperti berikut dipakai untuk menyajikan eksepsi.

exception page

Mengkustomisasi Tampilan Kesalahan

Para pengembang dapat mengkustomisasi penyajian pesan kesalahan. Standarnya, semua template output kesalahan disimpan dalam framework/Exceptions/templates. Lokasi dapat diubah dengan mengkonfigurasi TErrorHandler dalam konfigurasi aplikasi,

<module id="error" class="TErrorHandler" ErrorTemplatePath="Application.ErrorTemplates" />

THttpException menggunakan satu set template yang dibedakan berdasarkan pada nilai properti StatusCode yang berbeda dari THttpException. StatusCode memiliki arti yang sama seperti kode status dalam protokol HTTP. Sebagai contoh, kode status yang sama dengan 404 berarti URL yang diminta tidak ditemukan pada server. File template output menggunakan konvensi penamaan berikut:

error-.html

di mana status code merujuk ke nilai properti StatusCode dari THttpException, dan kode bahasa harus bahasa yang benar seperti misalnya en, zh, fr, dll. Ketika THttpException muncul, PRADO akan memilih template yang sesuai untuk menampilkan pesan eksepsi. Pertama PRADO akan mencari file template yang namanya berisi kode status dan yang bahasanya lebih disukai oleh jendela browser klien. Jika template seperti itu tidak ada, ia akan mencari template yang memiliki kode status yang sama tapi tanpa kode bahasa.

Konvensi penamaan untuk file template yang dipakai bagi semua eksepsi adalah sebagai berikut,

exception-.html

Sekali lagi, jika bahasa yang diinginkan tidak ditemukan, sebaliknya PRADO akan mencoba menggunakan exception.html.

PERHATIAN: Ketika menyimpan file template, pastikan file disimpan menggunakan pengkodean UTF-8. Pada Windows, Anda bisa menggunakan Notepad.exe untuk melakukan penyimpanan tersebut.