Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Programming
Code

Cara Mengatasi Error-error dan Exceptions pada Framework Yii

by
Difficulty:IntermediateLength:ShortLanguages:

Indonesian (Bahasa Indonesia) translation by Yanti Baddolo (you can also view the original English article)

Final product image
What You'll Be Creating

Pengenalan

Pada tutorial hai ini, saya akan memperkenalkan error-error pada Yii dan exception handling dan membimbing anda melalui beberapa skenario pengenalan.

Ingin tahu apa itu Yii? Temukan pada seri-seri Pengenalan pada Framework Yii dan Pemrograman dengan Yii.

Apa Perbedaan Antara Error dengan Exception?

Error merupakan cela tak terduga pada kode yang kita buat dan terkadang ditemukan lebih dulu oleh para pengguna. Error pada umumnya memutus proses eksekusi program. Hal yang penting bukan hanya bagaimana agar program berjalan dengan lancer untuk para pengguna namun juga untuk menginformasikan pada developer mengenai permasalahannya sehingga dapat disempurnakan.

Exception dibuat oleh developer ketika terdapat potensi akan terjadi kondisi error yang dapat diprediksi. Dalam kode dimana terdapat exception, developed dapat membuang (throw()) sebuah exception pada pengendali error.

Bagaimana Yii Menangani ini?

Pada Yii, error-error PHP yang non-fatal (seperti warning dan notice) diarahkan pada catchable exception sehingga anda dapat memutuskan reaksi apa yang akan terjadi dan bagaimana meresponnya. Anda dapat menunjuk sebuah pengontrol aksi untuk memproses semua jenis exception. Anda juga dapat melakukan kustomisasi format display untuk error, seperti HTML, JSON, XML, dan lain-lain.

Exception dan error yang fatal pada PHP hanya dapat diakses pada mode debug. Pada jenis skenario development ini, Yii dapat menampilkan detail informasi call stack dan segmen dari source code (anda dapat melihatnya pada gambar judul).

Error-error yang fatal merupakan jenis dari event yang memutus proses eksekusi aplikasi. Hal ini juga termasuk masalah memori penuh, memberi contoh dengan sebuah objek dari class yang tidak ada, atau memanggil fungsi yang tidak ada.

Sebagai contoh:

Mari mulai dengan beberapa contoh dari error dan exception handling.

Mengkonfigurasi Error dan Exception Handling

Pertama, kita konfigurasikan aplikasi kita pada frontend/config/main.php. errorHandler didefinisikan sebagai sebuah komponen, seperti dibawah ini. Contoh ini diambil dari startup saya seri aplikasi, Meeting Planner. ulasan errorHandler konfigurasi terdapat  pada komponen:

Dalam contoh diatas, errorAction mengarahkan pengguna pada aksi error SiteController saya.

Secara luas, Yii menawarkan bermacam-macam opsi konfigurasi untuk errorHandler untuk pengalihan dan pengumpulan data:

Property Type Description
$callStackItemView string The path of the view file for rendering exceptions and errors call stack element. e.g. '@yii/views/errorHandler/callStackItem.php'
$displayVars array List of the PHP predefined variables that should be displayed on the error page. e.g. ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION']
$errorAction String The route (e.g. site/error) to the controller action that will be used to display external errors.
$errorView string The path of the view file for rendering exceptions without call stack information. e.g. '@yii/views/errorHandler/error.php'
$exceptionView string The path of the view file for rendering exceptions. e.g. '@yii/views/errorHandler/exception.php'
$maxSourceLines integer Maximum number of source code lines to be displayed.
$maxTraceSourceLines integer Maximum number of trace source code lines to be displayed.
$previousExceptionView string The path of the view file for rendering previous exceptions. e.g. '@yii/views/errorHandler/previousException.php'

Menggunakan errorActions untuk Mengarahkan Eksekusi

Pada umumnya, ketika seorang pengguna menemukan error yang serius, kami ingin mengarahkan pengguna pada halaman error deskriptif yang bersahabat.

Itulah yang dilakukan errorAction pada errorHandler. Yakni mengarahkan pada actionError SiteController kami:

Pada SiteController kami, kami mendefinisikan aksi error eksplisit:

Berikut ini error handler dasar (anda dapat membaca lebih banyak mengenai ini disini):

Anda juga dapat merespon secara berbeda apakah terdapat sebuah error atau permintaan halaman tidak tersedia dalam aplikasi anda:

Berikut ini pengendali error Page Not Found 404 saya:

Yii2 Error Handling and Exceptions 404 Page Not Found Error

Secara teori anda dapat menyertakan situs peta dari link-link, halaman yang disarankan yang serupa dengan halaman yang diminta, fitur pencarian dan link kontak bantuan pada halaman error anda. Seluruhnya dapat membantu pengguna untuk memulihkan kembali halaman dan berpindah dengan baik.

Berikut ini halaman error saya secara umum (nyatanya saya memiliki fitur-fitur untuk ditambahkan):

Yii2 Error Handling and Exceptions Typical Page Error

Catching Exceptions

Jika kita ingin mmemonitor satu bagian kode untuk permasalahan-permasalahan, kita dapat menggunakan try catch block PHP. Dibawah ini, kita akan bereksperimen dengan memicu error fatal dari pembagian dengan angka nol:

Respon catch diatas menghasilkan peringatan untuk log. Yii memiliki cara logging yang ekstensif:

  • Yii::trace(): log sebuah pesan untuk .. bagaimana sebuah bagian kode bekerja. Utamanya untuk development.
  • Yii::info(): log sebuah pesan yang menyampaikan Informasi mengenai event.
  • Yii::warning(): log sebuah pesan peringatan bahwa terdapat event yang tidak diduga
  • Yii:error(); log sebuah error fatal untuk investigasi

Namun, disamping alih-alih melakukan log event, jika anda ingin secara langsung mengarahkan pengguna pada halaman error yang telah kita konfigurasikan sebelumnya, anda dapat melakukan throw exception dengan menggunakan event:

Berikut ini sebuah contoh dimana kita akan melakukan throw exception dengan HTTP status kode yang spesifik dan pesan kustom:

Kode tersebut akan tampak seperti berikut pada pengguna:

Yii2 Error Handling and Exceptions Throw an exception

Tentang Yii Logging

Seluruh error pada Yii di log bergantung pada bagaimana anda mengaturnya. Anda mungkin juga tertarik pada tutorial-tutorial saya mengenai Sentry dan Rollbar untuk logging pada Yii:

  • Building Your Startup: Error Logging

Penutup

Saya harap anda menikmati eksplorasi kita mengenai error dan exception handling. Saksikan tutorial-tutorial mendatang pada seri-seri Pemrograman Menggunakan Yii2 kami selagi kami melanjutkan penyelaman pada aspek-aspek yang berbeda dari framework ini.

Jika anda ingin menyelam lebih dalam pada development aplikasi Yii, anda dapat menyaksikan seri-seri Bangun Startupmu dengan PHP yang menggunakan template Yii Advanced. Didalamnya menceritakan pemrograman dalam tiap-tiap tahapan Meeting Planner. Seri tersebut akan sangat membantu jika anda ingin mempelajari cara membangun aplikasi-aplikasi Yii dari dasar.

Jika anda ingin menegetahui kapan tutorial Yii2 berikutnya diluncurkan, ikuti saya @lookahead_io di Twitter atau cek halaman instruktur saya.

Link Terkait

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.