1.用PHP作後台 關於一些介面的編寫問題。用
try{
if(empty($a) || !isset($a)){ throw new Exception("***")}
} catch (Exception $e){
echo $e->getMessage();
}
和 用
if(isset($a) && !empty($a)){
}
哪種好 有區別麼
回複內容:
1.用PHP作後台 關於一些介面的編寫問題。用
try{
if(empty($a) || !isset($a)){ throw new Exception("***")}
} catch (Exception $e){
echo $e->getMessage();
}
和 用
if(isset($a) && !empty($a)){
}
哪種好 有區別麼
異常處理和條件判斷,很明顯不是一個層面的東西!異常處理可以協助程式增加可維護性,舉例如下:
函數和函數調用情境中
使用條件判斷的話代碼如下:
如果使用異常處理的代碼如下:
getMessage();}
現在我們假設使用條件判斷增加參數或者修改錯誤傳回碼為-2,都需要修改外部調用代碼
但是如果我們用異常處理的代碼,外部因為是通過try catch來捕獲的,所有只需要關心如何修改商務邏輯的代碼即可,比如
getMessage();}
都不好...
對於第一個例子,如果 empty($a) 是 false,那麼!isset($a)必然也是false,如果 empty($a) 是 true,使用者按不會進行後面的判斷
對於第二個例子,相同的一個道理
所以,你的代碼直接用 if (! empty($a)) 就行了。
isset更多的用來檢測數組下標,例如
if (isset($_POST['username'])) { $username = $_POST['username'];} else { $username = '';}
如果不做這個檢查可能會引起一個Notice層級的錯誤。
而對於普通的變數,常見的處理為
if (empty($a)) { $a = 0; //因為$a可能是null, 空, 0, false,所以強調一下用0值表示。}
關於要不要使用try catch結構看你們怎麼定的項目編碼規範了。但是你的用法不對。
if (empty($a)) { throw new Exception('error');}
就可以了,交給別人去捕獲並處理,自己拋異常然後自己捕獲是形而上學(這裡的自己是指當前的域)。你想想以下兩種寫法有區別嗎?
try{ if(empty($a))throw new Exception('error');}catch(Exception $e) { die('錯誤');}if (empty($a)) die('錯誤');
try...catch 的目標是捕捉程式運行中拋出的異常.
第一段中把整體程式都被 try 包裹,並且把業務異常當做程式異常拋出.
第二段代碼也是好多項目裡的寫法,業務異常錯誤就響應個錯誤.
和第二段相比較,沒有好或壞,只有是否符合當前項目.
這種代碼設計就要看團隊的開發規範.
目前我這裡也是把業務異常當做代碼異常拋出,在最外層catch所有的異常.
針對不同類型的異常做不同的處理,比如是否寫入日誌,是否警示.
你好:首先你先區別出來isset() 和 empty()不同,isset()判斷的是變數或者值是否設定,至於是空不是空就不管了,而empty()判斷值是否為空白,並不管值是否存在,只做非空判斷。
個人建議用if(isset($a) && !empty($a)){}
來做判斷!
個人觀點!!!
我應該怎麼回答這個問題