異常

在php下面的異常,真的一言難盡啊。網上關於php關於異常的使用,也是寥寥無幾。最近在學習java,看到書(java核心編程 卷1)寫關於異常的使用建議,以爲仍是不錯。php

爲何要使用異常?
傳統的處理方式是返回一個特定的錯誤的答案,調用這個方法的方法對其進行分析。可是並非在任何狀況下都可以返回一個錯誤編碼。有可能沒法明確的將有效數據與無效數據區分。一個返回整形的方法就不能簡單地經過返回-1表示錯誤,由於-1極可能是一個徹底合法的結果java

忽然想到一點,吐個槽:php接收數據,偷點懶,這麼寫empty($_GET['a']) 。可是若是傳過來是0,那麼程序就出錯了。好像用mysqli的時候後,會有三個返回值,若是簡單用的empty,也會有問題。mysql

1 異常處理不能代替簡單的測試,在java中,與執行簡單的測試相比,捕獲異常所花費的時間大大超過前者。sql

理解:不能老是依靠異常來處理問題,若是能夠在經過簡單的判斷,就可以避免。好比,對於分頁,page,size。若是沒有傳,那麼能夠直接賦值page =1, size = 0;編程

2 不要過度地細化異常函數

3 利用異常層次結構學習

理解:2,3感受能夠放在一塊兒理解,使用合理的異常結構,合理的異常類。這個地方有點像是程序的擴展性,可讀性和效率上的平衡,好比代碼的長度,若是一個函數裏面的代碼過長,能夠抽出一些內容做爲一個方法,再去調用它。測試

4 不要壓制異常編碼

理解:捕獲到異常而不去處理它。這樣會壓制異常。mysqli

5 在檢測錯誤時,苛刻要比聽任更好

理解:在有錯誤發生時,儘可能仍是拋出一個異常比直接拋出一個null或者自定義的類型要好。可是我以爲若是能夠用默認值去處理,像1中分頁的例子,而不是讓程序中斷。我以爲這樣在某些狀況下,會更好一點。

6 不要羞於傳遞異常

理解:未必非要在函數中捕獲異常,也能夠將它拋出,由高層次的函數通告用戶發生錯誤。php好像沒有這種寫法,- -。

若是有理解不正確的地方,但願能夠指出。

相關文章
相關標籤/搜索