淺談PHP中的錯(cuò)誤處理和異常處理
錯(cuò)誤處理:
1. 語(yǔ)法錯(cuò)誤
2. 運(yùn)行時(shí)的錯(cuò)誤
3. 邏輯錯(cuò)誤
錯(cuò)誤報(bào)告:
錯(cuò)誤E_ERROR
警告E_WARNING
注意E_NOTICE
開(kāi)發(fā)階段:開(kāi)發(fā)時(shí)輸出所有的錯(cuò)誤報(bào)告,有利于我們進(jìn)行調(diào)試
運(yùn)行階段:不要讓程序輸出任何一種錯(cuò)誤報(bào)告
將錯(cuò)誤報(bào)告寫(xiě)入日志中
一. 指定錯(cuò)誤報(bào)告error_reporting=E_ALL(在php.inn)
二. 關(guān)閉錯(cuò)誤輸出display_errors=off(在php.ini中)
三. 開(kāi)啟錯(cuò)誤日志的功能log_errors=on(在php.ini中)
1. 默認(rèn)如果不指定錯(cuò)誤日志位置,則默認(rèn)寫(xiě)入web服務(wù)器的日志中
2. 為error_log選項(xiàng)指定一個(gè)文件名,這個(gè)文件名就是錯(cuò)誤日志
3. 寫(xiě)入到操作系統(tǒng)日志中error_log=syslog
<?php //注意和警告都不會(huì)終止程序的運(yùn)行,但是錯(cuò)誤會(huì)終止程序的運(yùn)行 /* 錯(cuò)誤E_ERROR 警告E_WARNING 注意E_NOTICE */ //所有的錯(cuò)誤都輸出除了注意 error_reporting(E_ALL & ~E_NOTICE); //設(shè)置配置文件的值(臨時(shí)) //ini_set("upload_max_filesize", 2000000000); //得到配置文件的值 //ini_get("upload_max_filesize"); //關(guān)閉錯(cuò)誤報(bào)告的顯示,一般在運(yùn)行階段使用 ini_set("display_errors", "off"); //將錯(cuò)誤報(bào)告寫(xiě)入日志中 ini_set("log_errors", "on"); //日志的目錄 ini_set("error_log", "D:/error.log"); gettype($var); //注意 gettype(); //警告 //getype(); //錯(cuò)誤,程序終止 echo "############<br>"; ?>
異常處理:意外,是在程序運(yùn)行過(guò)程中發(fā)生的意料之外的事,使用異常改變腳本正常流程
PHP5中的一個(gè)新的重要特性
try{
}catch(異常對(duì)象){
}
1. 如果try中代碼沒(méi)有問(wèn)題,則將try中代碼執(zhí)行完成后就到catch后執(zhí)行
2. 如果try中代碼有異常發(fā)生,則拋出一個(gè)異常對(duì)象(使用throw),拋出給了catch中的參數(shù),則在try中出現(xiàn)異常代碼后的內(nèi)容就不會(huì)執(zhí)行,直接跳轉(zhuǎn)到catch中去執(zhí)行,catch中執(zhí)行完成,再繼續(xù)向下執(zhí)行
<?php try{ echo "11111111<br>"; $file=@fopen("./hello.txt","r"); if(!$file){ throw new Exception("文件打開(kāi)失敗"); } echo "2222222222<br>"; }catch(Exception $e){ echo "3333333<br>"; echo $e->getMessage()."<br>"; touch("hello.txt"); $file=@fopen("./hello.txt","r"); } echo "4444444<br>"; ?>
以上這篇淺談PHP中的錯(cuò)誤處理和異常處理就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
php urlencode()與urldecode()函數(shù)字符編碼原理詳解
中文字符編碼研究系列第五期,詳解 urlencode()與urldecode()函數(shù)字符編碼原理,兩個(gè)函數(shù)分別用于編碼 URL 字符串和解碼已編碼的 URL 字符串,實(shí)現(xiàn)對(duì)中文字符的編碼2011-12-12PHP實(shí)現(xiàn)通過(guò)strace定位故障原因的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)通過(guò)strace定位故障原因的方法,結(jié)合實(shí)例形式分析了出現(xiàn)高負(fù)載情況下使用strace定位故障原因的相關(guān)命令與操作技巧,需要的朋友可以參考下2018-04-04PHP中遍歷stdclass object的實(shí)現(xiàn)代碼
從網(wǎng)上查到的方法是 用get_object_vars 把類類型轉(zhuǎn)換成數(shù)組 然后在用 foreach 遍歷即可2011-06-06兼容性最強(qiáng)的PHP生成縮略圖的函數(shù)代碼(修改版)
寫(xiě)通用性程序考慮兼容性是很頭痛的事情,關(guān)于用PHP生成縮略圖的代碼很多,不過(guò)能完全兼容gd1.6和gd2.x,并能保證縮圖清晰性的代碼幾乎沒(méi)有,我把我以前的代碼改了一下,就能實(shí)現(xiàn)了。2011-01-01PHP實(shí)現(xiàn)基本留言板功能原理與步驟詳解
這篇文章主要介紹了PHP實(shí)現(xiàn)基本留言板功能,結(jié)合實(shí)例形式分析了PHP實(shí)現(xiàn)基本留言板功能的相關(guān)原理、數(shù)據(jù)庫(kù)構(gòu)建、功能實(shí)現(xiàn)等步驟與相關(guān)操作技巧,需要的朋友可以參考下2020-03-03php文件上傳簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了php文件上傳簡(jiǎn)單實(shí)現(xiàn)方法,以一個(gè)完整實(shí)例形式分析了文件上傳的過(guò)程,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01php繼承中方法重載(覆蓋)的應(yīng)用場(chǎng)合
這篇文章主要介紹了php繼承中方法重載(覆蓋)的應(yīng)用場(chǎng)合,以實(shí)例形式較為詳細(xì)的分析了重載的用法與對(duì)應(yīng)的適用情況及使用技巧,需要的朋友可以參考下2015-02-02