![](/img/trans.png)
[英]Is try catch block necessary inside controller in laravel?
[英]Try Catch block should inserted in Controller or Model?
我有一個如下的結構項目:
/Controller
test.php
/Models
test_model.php
現在,當我執行請求時,模型test.php
在相應的模型(在本例中為test_model.php
了請求。 這里沒問題。 現在我的問題是:我應該在test.php
類(控制器)還是在test_model.php
類中處理test_model.php
?
為了執行所有數據庫對話,我使用pdo創建了一個db層。 我設置:
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
處理異常。 一切正常,但我對此表示懷疑。 一個實踐示例:
<?php
include "test_model.php";
public function selectInformation()
{
try
{
$test = new Test_Model(); //just as example..
return $test->selectUserInfo(); // test_model
}catch(Exception $ex)
{
echo json_encode(array("success" => false, "message" => $ex->getMessage()));
exit();
}
}
...
這里是Test_Model
類:
<?php
class Test_Model extends PDO
{
public function __construct()
{
parent::__construct();
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
public function selectUserInfo()
{
//I removed most part of the code, essentially here an exception is fired by a non correct db table name
}
實際上,我可以管理Test
類中的所有異常,但這是一個好習慣嗎? 我僅將每個Model
用於從數據庫返回結果。 實際上,在Model
類中沒有每個。
既不在模型中也不在控制器中。
錯誤異常必須在錯誤處理程序中進行處理。
不必單獨“處理”對模型的每個調用,而必須在一個地方處理所有錯誤。 這稱為錯誤處理程序。
錯誤消息或行號均不應以JSON發送。 此信息必須在本地記錄 ,而沒有內部錯誤必須暴露在外部。 只需要顯示一個通用的借口。
應該通過set_error_handler設置一個錯誤處理程序,該錯誤處理程序必須負責處理錯誤。 它應該記錄生產中的錯誤,而只有一個普遍的借口被發送到外面。
請注意,在發生錯誤的情況下,發送5xx系列的適當的HTTP狀態代碼非常重要
您應該將try catch塊放入控制器中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.