[英]Implementing a try/catch block in php constructor function
我有一個try-catch塊查詢。 我將創建對象,如果失敗,它將引發錯誤消息或在其他頁面上重定向。
碼
function __construct() {
try{
$this->ServiceObj = AnyClass::getService('XXX');
}
catch{
return Redirect::to('/');
}
}
public function MyOwnFunction() {
$getValueofCode = $this->_ServiceObj->set($endPoint_Url); //it's only example method not want to set anything
}
這是在構造函數中定義和使用try catch塊的正確方法嗎? 我可以在建築中使用試擋塊嗎? 如果沒有 ,有沒有比這更好的方法了?
提前致謝!!!
您絕對可以在構造函數中使用try catch,只是不要忘記像catch (\\Exception $e)
這樣指定要捕獲的異常類。 但是,Laravel將不會處理返回的重定向。 (通過定義構造函數甚至不應該返回任何東西)
一個簡單的解決方法是在重定向上調用send()
。 這將立即將其返回給客戶端並停止該應用程序。
try{
$this->ServiceObj = AnyClass::getService('XXX');
}
catch(\Exception $e){
Redirect::to('/')->send();
}
但是,由於您提到了登錄頁面,因此最好使用before過濾器進行檢查和重定向。 就像內置的auth
過濾器一樣。
第三種解決方案是App::error
。 在app/start/global.php
您可以執行以下操作:
App::error(function(FooBarException $exception)
{
return Redirect::to('/');
});
當然,這僅在您的異常足夠具體時才起作用(將FooBarException
替換為您要捕獲的異常)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.