1.如果沒有錯(cuò)誤處理機(jī)制會(huì)怎樣?
創(chuàng)新互聯(lián)公司專注于甘州企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。甘州網(wǎng)站建設(shè)公司,為甘州等地區(qū)提供建站服務(wù)。全流程專業(yè)公司,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)案例1:
<?php $fp=fopen("aa.txt","r");//打開文件,沒有驗(yàn)證,是否存在該文件? echo "ok"; ?>結(jié)果:
Warning: fopen(aa.txt) [function.fopen]: failed to open stream: No such file or directory in E:\Software_default\wamp_wwwroot\error\error01.phpon line 2
ok
來自 <http://localhost/error/error01.php>
改進(jìn)
案例2:
<?php if(file_exists("aa.txt"))//絕對(duì)路徑 { echo "ok"; $fp=fopen("aa.txt","r");//打開文件 fclose($fp); } else { echo "no file"; exit(); } ?>2.簡(jiǎn)單的die()語句
die()語法結(jié)構(gòu)等同于exit().
die處理錯(cuò)誤三張方式:
(1).使用簡(jiǎn)單的die()語句;
(2).使用 file_exists("aaa.txt") or die("no file");
使用die()處理以上例子
案例3:
<?php if(file_exists("aaa.txt"))//絕對(duì)路徑 { echo "ok"; $fp=fopen("aa.txt","r");//打開文件 fclose($fp); } else { die("no file"); } ?>或者更簡(jiǎn)潔的寫法
案例4:
<?php file_exists("aaa.txt") or die("no file"); ?>3.創(chuàng)建自定義函數(shù)處理錯(cuò)誤
在php中,如果出現(xiàn)錯(cuò)誤,會(huì)啟動(dòng)默認(rèn)機(jī)制處理錯(cuò)誤的方式來處理錯(cuò)誤。如案例1,如果沒有存在aa.txt,php將提示
Warning: fopen(aa.txt) [function.fopen]: failed to open stream: No such file or directory inE:\Software_default\wamp_wwwroot\error\error01.php on line2
因此我們可以自定義錯(cuò)誤方式來代替php默認(rèn)錯(cuò)誤機(jī)制
(1).創(chuàng)建自定義錯(cuò)誤函數(shù)
函數(shù)必須有能力處理至少兩個(gè)參數(shù)(error level , error message),但是可以接受最多5個(gè)參數(shù)(可選:flie,line-number,error context)
(2).基本語法
A.error_function(error_level ,error_message,error_flie,error_line,error_context)
B.同時(shí)改寫 set_error_handle("error_function",錯(cuò)誤級(jí)別),錯(cuò)誤級(jí)別如下圖:
其中,出現(xiàn)warning時(shí),不會(huì)暫停腳本運(yùn)行
案例5:
<?php function my_error($errno,$errmes) { echo "<strong>錯(cuò)誤級(jí)別</strong>:<font color='red'>".$errno."</font><br>"; echo "<strong>錯(cuò)誤信息</strong>:".$errmes; } set_error_handler("my_error",E_WARNING); echo "測(cè)試打開aaa.txt<br>"; $fp=fopen("aaa.txt","r");//打開文件 ?>4.錯(cuò)誤觸發(fā)器
需求:有一段代碼,如果input接受一個(gè)年齡,假如年齡大于100,我認(rèn)為是一個(gè)錯(cuò)誤。
//傳統(tǒng)方法:
案例6:
If($age>100)
{
echo "too old";
exit();
}
現(xiàn)在可以使用自定義錯(cuò)誤觸發(fā)器
案例7:
<?php $age=700; echo "age:".$age."<br>"; if($age>100) { trigger_error("年齡太大"); exit(); } ?>結(jié)果:
age:700
Notice: 年齡太大 in E:\Software_default\wamp_wwwroot\error\error05.phpon line 7
來自 <http://localhost/error/error05.php>
從案例7,我們可以發(fā)現(xiàn),使用了trigger_error(),相當(dāng)于觸發(fā)了一個(gè)錯(cuò)誤,從而調(diào)用php默認(rèn)錯(cuò)誤提示機(jī)制,因此,在此情況下,還可以進(jìn)行改寫錯(cuò)誤函數(shù),即自定義錯(cuò)誤函數(shù)。
其中,trigger_error()里有兩個(gè)參數(shù),trigger_error("error_msg",error_type),默認(rèn)為E_USER_NOTICE,可選有:
E_USER_WARNING,E_USER_ERROR,根據(jù)需求選擇。
注意:此處的錯(cuò)誤級(jí)別通常為:E_USER_WARNING,E_USER_NOTICE,E_USER_ERROR
根據(jù)需求選擇適當(dāng)類型,由于案例7出現(xiàn)notice錯(cuò)誤,所以此處,我們應(yīng)該選擇E_USER_NOTICE。
案例8:
<?php function age_error($erroro,$erromes) { echo "<strong>錯(cuò)誤級(jí)別</strong>:<font color='red'>".$erroro."</font><br>"; echo "<strong>錯(cuò)誤信息</strong>:".$erromes; } set_error_handler("age_error",E_USER_NOTICE);//錯(cuò)誤級(jí)別通常為:E_USER_WARNING,E_USER_NOTICE,E_USER_ERROR $age=700; echo "age:".$age."<br>"; if($age>100) { trigger_error("年齡太大,大于120");//默認(rèn)是E_USER_NOTICE exit(); } ?>結(jié)果如下:
age:700
錯(cuò)誤級(jí)別:1024
錯(cuò)誤信息:年齡太大,大于120
來自 <http://localhost/error/error06.php>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
文章題目:php中的錯(cuò)誤處理機(jī)制-創(chuàng)新互聯(lián)
鏈接URL:http://www.chinadenli.net/article26/dhsdjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、搜索引擎優(yōu)化、手機(jī)網(wǎng)站建設(shè)、域名注冊(cè)、營銷型網(wǎng)站建設(shè)、Google
聲明:本網(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)
猜你還喜歡下面的內(nèi)容