Cara menggunakan Try and Catch pada Laravel

Terkadang bagi programmer yang baru belajar suka bertanya kegunaan fungsi try, throw and catch didalam sebuah fungsi atau didalam program, padahal banyak sekali kegunaan dari fungsi ini.

Apa itu Exception

Pernah dengar Exception ? Exception menurut halaman php.net adalah

PHP 5 has an exception model similar to that of other programming languages. An exception can be thrown, and caught (“catched”) within PHP. Code may be surrounded in a try block, to facilitate the catching of potential exceptions. Each try must have at least one corresponding catch or finally block.

Pada PHP 5 exception digunakan untuk menghandle error dengan pendekatan object oriented lihat http://www.w3schools.com/php/php_exception.asp

Contoh nya dapat dilihat disini

<?php
// Membuat fungsi untuk mengetahui bahwa var $number jika lebih besar dari 1 maka akan melempar Exception
  function checkNum($number) {
if($number>1) {
throw new Exception("Value must be 1 or below");
}
return true;
}

//Men trigger exception didalam "try" block
try {
checkNum(2);
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}

1. Langkah pertama kita akan membuat fungsi checkNum yang didalam fungsi tersebut jika variable $number lebih dari 1 maka kita akan membuat Exception baru berisikan informasi bahawa variable $number tidak boleh lebih dari 1

2. Untuk mengimplementasikannya adalah kita masukan fungsi checkNum kedalam blok try and catch dan didalam blok catch akan menangkap pesan Exception yang telah dilempar dari dalam fungsi checkNum

Implementasi didalam Laravel

Disini saya menggunakan PHP Repository sebagai perantara Bisnis Logic (Model) dan Controller sehingga Controller saya ramping karena ber DIET mayo,

Pada TodoRepositories.php saya membuat fungsi findByID untuk menampilkan sebuah record, didalam fungsi itu jika parameter id diisi maka Model Class Todos akan melakukan pencarian berdasarkan parameter id, namun jika tidak ada hasil maka fungsi ini akan melempar Exception, Record Not Found

<?php
public function findByID($id) {
$result = FALSE;

if (isset($id)):
$result = Todos::find($id);
if (!$result):
throw new \Exception("Record ".$id." Not Found");
endif;
endif;

return $result;
}

Lalu pada TodoController.php saya cukup memanggil fungsi findByID ini yang terdapat di TodoController, untuk penempatannya harus berada didalam blok try and catch tersebut agar dapat ditangkap oleh fungsi.

<?php
/**
* Display the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
try {
$todos = $this->todos->getAll();
$result = $this->todos->findByID($id);

return view('todo.show', ['result' => $result,
'todos' => $todos,
]);
} catch (Exception $exc) {
abort(404, $exc->getMessage());
}
}

Jika tertangkap dari parameter id bahwa memang didalam table tidak ada record id maka saya akan melempar halaman 404 dengan pesan Exception yang saya lempar didalam fungsi findByID

Sample Source program dapat di download disini https://github.com/duniadua/TodoApplication

Technical Needs (TN)

  1. PHP Language
  2. Composer
  3. Web Server (Apache / Nginx ect)

Tutorial Experience Level (TEL)

  1. Low
  2. Medium
  3. High

Consumed Time
10 Menit

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s