摘要:網(wǎng)上關(guān)于關(guān)于異常的使用,也是寥寥無幾。異常處理不能代替簡單的測試,在中,與執(zhí)行簡單的測試相比,捕獲異常所花費的時間大大超過前者。不要羞于傳遞異常理解未必非要在函數(shù)中捕獲異常,也可以將它拋出,由高層次的函數(shù)通告用戶發(fā)生錯誤。
在php下面的異常,真的一言難盡啊。網(wǎng)上關(guān)于php關(guān)于異常的使用,也是寥寥無幾。最近在學(xué)習(xí)java,看到書(java核心編程 卷1)寫關(guān)于異常的使用建議,覺得還是不錯。
為什么要使用異常?
傳統(tǒng)的處理方式是返回一個特定的錯誤的答案,調(diào)用這個方法的方法對其進行分析。但是并不是在任何情況下都能夠返回一個錯誤編碼。有可能無法明確的將有效數(shù)據(jù)與無效數(shù)據(jù)區(qū)分。一個返回整形的方法就不能簡單地通過返回-1表示錯誤,因為-1很可能是一個完全合法的結(jié)果
突然想到一點,吐個槽:php接收數(shù)據(jù),偷點懶,這么寫empty($_GET["a"]) 。但是如果傳過來是0,那么程序就出錯了。好像用mysqli的時候后,會有三個返回值,如果簡單用的empty,也會有問題。
1 異常處理不能代替簡單的測試,在java中,與執(zhí)行簡單的測試相比,捕獲異常所花費的時間大大超過前者。
理解:不能總是依靠異常來處理問題,如果可以在通過簡單的判斷,就能夠避免。比如,對于分頁,page,size。如果沒有傳,那么可以直接賦值page =1, size = 0;
2 不要過分地細化異常
3 利用異常層次結(jié)構(gòu)
理解:2,3感覺可以放在一起理解,使用合理的異常結(jié)構(gòu),合理的異常類。這個地方有點像是程序的擴展性,可讀性和效率上的平衡,比如代碼的長度,如果一個函數(shù)里面的代碼過長,可以抽出一些內(nèi)容作為一個方法,再去調(diào)用它。
4 不要壓制異常
理解:捕獲到異常而不去處理它。這樣會壓制異常。
5 在檢測錯誤時,苛刻要比放任更好
理解:在有錯誤發(fā)生時,盡量還是拋出一個異常比直接拋出一個null或者自定義的類型要好。但是我覺得如果可以用默認值去處理,像1中分頁的例子,而不是讓程序中斷。我覺得這樣在某些情況下,會更好一點。
6 不要羞于傳遞異常
理解:未必非要在函數(shù)中捕獲異常,也可以將它拋出,由高層次的函數(shù)通告用戶發(fā)生錯誤。php好像沒有這種寫法,- -。
如果有理解不正確的地方,希望可以指出。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73461.html
摘要:異常也就是指程序運行時發(fā)生錯誤,而異常處理就是對這些錯誤進行處理和控制。有兩個重要的子類異常和錯誤,二者都是異常處理的重要子類,各自都包含大量子類。需要注意的是,一旦某個捕獲到匹配的異常類型,將進入異常處理代碼。 1,異常現(xiàn)象 程序錯誤分為三種:1,編譯錯誤;2,運行時錯誤;3,邏輯錯誤。 編譯錯誤是因為程序沒有遵循語法規(guī)則,編譯程序能夠自己發(fā)現(xiàn)并且提示我們錯誤的原因和位置,這...
摘要:不受檢查異常為編譯器不要求強制處理的異常,檢查異常則是編譯器要求必須處置的異常。潛在的異常處理器是異常發(fā)生時依次存留在調(diào)用棧中的方法的集合。當運行時系統(tǒng)遍歷調(diào)用棧而未找到合適的異常處理器,則運行時系統(tǒng)終止。異常處理涉及到五個關(guān)鍵字,分別是。 概念 程序運行時,發(fā)生的不被期望的事件,它阻止了程序按照程序員的預(yù)期正常執(zhí)行,這就是異常。 異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并...
摘要:不過按照經(jīng)驗來說,這類異常要么盡量避免,要么出現(xiàn)了就要做異常處理,從而保證程序的健壯性。業(yè)務(wù)是千變?nèi)f化,但是它們可能產(chǎn)生的異常處理方式是不會變化的,按照這個思路去做異常處理即可。 前言:說到異常體系,可能對于一些初入職場的老鐵會很頭痛,不能夠很清晰的描述異常是個什么情況。那么本文將通過打流水仗的方式給大家介紹一下工作中涉及的異常知識。首先能看到本文,說明也對異常是有了解的,所以文章開頭...
閱讀 579·2023-04-25 16:00
閱讀 1624·2019-08-26 13:54
閱讀 2504·2019-08-26 13:47
閱讀 3435·2019-08-26 13:39
閱讀 1052·2019-08-26 13:37
閱讀 2748·2019-08-26 10:21
閱讀 3544·2019-08-23 18:19
閱讀 1609·2019-08-23 18:02