在java、python等語言中,異常對(duì)于我們來說已經(jīng)是必不可少的錯(cuò)誤處理方式。異常處理是面向?qū)ο缶幊讨械囊环N很強(qiáng)大的特性,然而很多PHPer對(duì)它不了解,甚至認(rèn)為它會(huì)破壞代碼結(jié)構(gòu)。即使在很多開源項(xiàng)目中,也難以見到異常的蹤影。那么,PHP中的異常,到底有沒有意義呢?
10年積累的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有洛南免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
PHP有兩種錯(cuò)誤處理機(jī)制,一種是內(nèi)置錯(cuò)誤,一種是異常。
內(nèi)置錯(cuò)誤,包含error、warning、notice等錯(cuò)誤類型。很多PHP的內(nèi)置函數(shù),和一些PHP擴(kuò)展,都會(huì)使用這種類型的錯(cuò)誤。此類錯(cuò)誤的優(yōu)勢(shì)是處理起來比較方便。不重要的錯(cuò)誤,可以通過配置php選項(xiàng)來忽略它。我們甚至可以通過set_error_handler()函數(shù),來集中處理非致命的錯(cuò)誤。但是,PHP的寬容往往會(huì)讓程序員養(yǎng)成一個(gè)壞習(xí)慣,那就是在代碼中留下大量warning、notice級(jí)別的錯(cuò)誤。這樣對(duì)程序的調(diào)試和后期維護(hù)帶來很多不便。而且致命的錯(cuò)誤(Fatal Error),是沒有辦法處理的。這也是PHP的一大硬傷。
在PHP中使用異常有以下優(yōu)勢(shì):
一、異常能提高程序的健壯性。
在需要處理錯(cuò)誤的場(chǎng)景,異常能讓我們輕松掌控程序,采取相應(yīng)的處理措施。并不是所有的異常都需要處理。在一些異常發(fā)生時(shí),沒有其他替代方案,這時(shí)我們可以記錄一些錯(cuò)誤日志,并讓程序崩潰。在web應(yīng)用里,我們可以給用戶顯示一個(gè)500錯(cuò)誤頁面來增強(qiáng)用戶體驗(yàn)。一些PHP的開源庫會(huì)提供大量的異常類型,這樣會(huì)幫助我們快速找出代碼錯(cuò)誤,減少程序BUG。
二、異常處理能增強(qiáng)程序的可維護(hù)性。
函數(shù)應(yīng)該有一系列的輸入,并且有唯一的輸出。在參數(shù)不正確、或者發(fā)生系統(tǒng)錯(cuò)誤時(shí),我們需要告知使用者發(fā)生了什么樣的錯(cuò)誤,便于使用者處理和記錄。
利用返回值、引用變量來返回錯(cuò)誤在PHP程序中很常見:
function foo($var) { if (!is_int($var)) { return array(-1, '參數(shù)1必須是整數(shù)'); } if ($var = 0) { return array(-2, '參數(shù)1必須大于0'); } return $var;}這樣的函數(shù)使用非常不方便。使用者需要通過判斷函數(shù)的返回值,來確保程序是否正常運(yùn)行。額外的邏輯判斷,會(huì)降低程序的可讀性。
假如函數(shù)被修改為這樣:
function foo($var) { if (!is_int($var)) { return array(-1, '參數(shù)1必須是整數(shù)'); } if ($var = 0) { return array(-2, '參數(shù)1必須大于0'); } return array($var, '');}這時(shí)你外層的判斷邏輯就需要修改,是不是很麻煩?
使用異常,在執(zhí)行失敗時(shí)拋出異常,可以讓函數(shù)的輸出非常干凈,避免額外的處理。減少了代碼量,也增強(qiáng)了程序的可維護(hù)性。
三、使用異常有助于我們集中處理錯(cuò)誤。
在程序拋出異常時(shí),只要沒有遇到try catch,異常會(huì)逐漸向函數(shù)調(diào)用堆棧頂層傳遞。這樣我們不需要每一層都處理錯(cuò)誤。我們可以在程序的入口處集中處理所有未處理的異常,有助于我們發(fā)現(xiàn)潛在的程序BUG。而一個(gè)只會(huì)返回正常處理結(jié)果和錯(cuò)誤代碼的函數(shù),在其出錯(cuò)時(shí)不得不立即處理。如果我們想在代碼頂層再處理這個(gè)錯(cuò)誤,就不得不一層一層返回這個(gè)錯(cuò)誤,給程序設(shè)計(jì)帶來很多不便。
綜上,我們應(yīng)該盡量使用異常,保證程序的可靠性。
求采納為滿意回答。
需要關(guān)閉數(shù)據(jù)庫的。如果是一個(gè)長(zhǎng)連接的話,你的網(wǎng)站加入并發(fā)請(qǐng)求數(shù)很多,也就是說同時(shí)有很多人來訪問你的網(wǎng)站,并且每個(gè)訪問者都需要查詢一次mysql數(shù)據(jù)庫的話,會(huì)很快把你的系統(tǒng)資源消耗完了。短鏈接就沒有這個(gè)問題,每次查詢完就馬上關(guān)閉了,這樣不容易消耗過多的系統(tǒng)資源。但是長(zhǎng)連接也有個(gè)好處就是,頻繁查詢的時(shí)候,可以節(jié)省了多次建立TCP連接的時(shí)間。
不是沒有 是你沒有找到
不說別的 起碼cp的后臺(tái)就是有中文的
本文題目:php免數(shù)據(jù)庫短網(wǎng)址 php+mysql網(wǎng)站
當(dāng)前網(wǎng)址:http://jinyejixie.com/article36/dosgppg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站排名、、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)