色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

前端學(xué)PHP之錯(cuò)誤處理

瀏覽:84日期:2022-09-11 15:40:02
前面的話

錯(cuò)誤處理對(duì)于程序開發(fā)至關(guān)重要,不能提前預(yù)測(cè)到可能發(fā)生的錯(cuò)誤,不能提前采取恢復(fù)策略,可能導(dǎo)致較差的用戶體驗(yàn)。本文將詳細(xì)介紹PHP的錯(cuò)誤處理

[注意]關(guān)于javascript的錯(cuò)誤處理機(jī)制移步至此

錯(cuò)誤報(bào)告

PHP程序的錯(cuò)誤發(fā)生一般歸屬于下列三個(gè)領(lǐng)域:

1、語(yǔ)法錯(cuò)誤

語(yǔ)法錯(cuò)誤最常見,并且也容易修復(fù)。如:代碼中遺漏一個(gè)分號(hào)。這類錯(cuò)誤會(huì)阻止腳本的執(zhí)行

2、運(yùn)行時(shí)錯(cuò)誤

這種錯(cuò)誤一般不會(huì)阻止PHP腳本的執(zhí)行,但會(huì)阻止當(dāng)前要做的事情。輸出一條錯(cuò)誤,但php腳本繼續(xù)執(zhí)行

3、邏輯錯(cuò)誤

這種錯(cuò)誤最麻煩,既不阻止腳本執(zhí)行,也不輸出錯(cuò)誤消息

[注意]若將php.ini配置文件中的display_errors從默認(rèn)的on設(shè)置為off,將不顯示任何錯(cuò)誤

在PHP腳本中可調(diào)用ini_set()函數(shù),動(dòng)態(tài)設(shè)置php.ini配置文件

ini_set('display_errors','On'); //顯示所有錯(cuò)誤信息

前端學(xué)PHP之錯(cuò)誤處理

錯(cuò)誤級(jí)別

前端學(xué)PHP之錯(cuò)誤處理

實(shí)際上,表格中的13個(gè)錯(cuò)誤類型可以分為3類:注意級(jí)別、警告級(jí)別和錯(cuò)誤級(jí)別。一般地,在開發(fā)過程中,忽略注意級(jí)別的錯(cuò)誤

<?php getType($a);//未定義變量,注意級(jí)別 echo '1111111111111111<br>'; getType();//未傳入?yún)?shù),警告級(jí)別 echo '222222222222222222222<br>'; getType3();//函數(shù)名錯(cuò)誤,錯(cuò)誤級(jí)別 echo '333333333333333333333<br>';?>

前端學(xué)PHP之錯(cuò)誤處理

錯(cuò)誤處理

1、第一種錯(cuò)誤處理方法是修改配置文件

前端學(xué)PHP之錯(cuò)誤處理

錯(cuò)誤級(jí)別默認(rèn)為提示所有級(jí)別的錯(cuò)誤:error_reporting = E_ALL

把error_reporting = E_ALL改為error_reporting = E_ALL & ~E_NOTICE 表示不提示注意級(jí)別的錯(cuò)誤。然后,重啟服務(wù)生效

error_reporting = E_ALL & ~E_NOTICE 拋出任何非注意的錯(cuò)誤,默認(rèn)值error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR 只考慮致命的運(yùn)行時(shí)錯(cuò)誤、新解析錯(cuò)誤和核心錯(cuò)誤error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) 報(bào)告除用戶導(dǎo)致的錯(cuò)誤之外的所有錯(cuò)誤

2、第二種錯(cuò)誤處理方法是使用錯(cuò)誤處理函數(shù)

在PHP腳本可以通過error_reporting( )函數(shù)動(dòng)態(tài)設(shè)置錯(cuò)誤報(bào)告級(jí)別

<?php error_reporting(E_ALL & ~E_NOTICE); getType($a);//注意級(jí)別 echo '1111111111111111<br>'; getType();//警告級(jí)別 echo '222222222222222222222<br>'; getType3();//錯(cuò)誤級(jí)別 echo '333333333333333333333<br>';?>

前端學(xué)PHP之錯(cuò)誤處理

自定義錯(cuò)誤處理

自定義錯(cuò)誤報(bào)告的處理方式,可以完全繞過標(biāo)準(zhǔn)的PHP錯(cuò)誤處理函數(shù),這樣就可以按自己定義的格式打印錯(cuò)誤報(bào)告,或改變錯(cuò)誤報(bào)告打印的位置,以下幾種情況可以考慮自定義錯(cuò)誤處理:1、記下錯(cuò)誤的信息,及時(shí)發(fā)現(xiàn)一些生產(chǎn)環(huán)境出現(xiàn)的問題;2、屏蔽錯(cuò)誤;3、控制錯(cuò)誤的輸出; 4、作為調(diào)試工具

使用set_error_handler()函數(shù)來設(shè)置用戶自定義錯(cuò)誤處理

<?php //error_reporting(E_ALL & ~E_NOTICE); //在php中注冊(cè)一個(gè)函數(shù)來處理錯(cuò)誤報(bào)告,替代默認(rèn)的方式 set_error_handler('myerrorfun'); $mess = ''; //自定義錯(cuò)誤報(bào)告處理函數(shù) function myerrorfun($error_type, $error_message, $error_file, $error_line) {global $mess;$mess.='發(fā)生錯(cuò)誤級(jí)別為{$error_type}類型, 錯(cuò)誤消息<b>{$error_message}</b>, 在文件<font style=’color:red’>{$error_file}</font>中, 第{$error_line}行。<br>';} getType($a); echo '1111111111111111<br>'; getType(); echo '222222222222222222222<br>'; echo '--------------------------------------------<br>'; echo $mess;?>

前端學(xué)PHP之錯(cuò)誤處理

錯(cuò)誤日志

一般地,程序都會(huì)保存錯(cuò)誤日志,用來記錄程序運(yùn)行時(shí)的錯(cuò)誤信息。且錯(cuò)誤日志都有其默認(rèn)的存儲(chǔ)位置。對(duì)于錯(cuò)誤信息和錯(cuò)誤日志的位置,我們都可以進(jìn)行修改

在PHP.ini配置文件中,有以下幾項(xiàng)可以對(duì)錯(cuò)誤日志進(jìn)行設(shè)置

error_reporting = E_ALL //將向PHP發(fā)送每個(gè)錯(cuò)誤display_errors=Off //不顯示錯(cuò)誤報(bào)告log_errors=On //決定日志語(yǔ)句記錄的位置log_errors_max_log=1024 //每個(gè)日志項(xiàng)的最大長(zhǎng)度error_log=G:/myerror.log //指定錯(cuò)誤寫進(jìn)的文件

在php文件中,我們可以使用函數(shù)error_log()來自定義錯(cuò)誤信息

<?phperror_log('登錄失敗了!');?>

前端學(xué)PHP之錯(cuò)誤處理

異常處理

異常(Exception)處理用于在指定的錯(cuò)誤發(fā)生時(shí)改變腳本的正常流程,是PHP5中的一個(gè)新的重要特性。異常處理是一種可擴(kuò)展、易維護(hù)的錯(cuò)誤處理機(jī)制,并提供了一種新的面向?qū)ο蟮腻e(cuò)誤處理方式

try{ 使用try去包含可能會(huì)發(fā)生異常的代碼 一旦出現(xiàn)異常try進(jìn)行捕獲異常,交給catch處理。 拋出異常語(yǔ)句:throw 異常對(duì)象。}catch(異常對(duì)象參數(shù)){ 在這里做異常處理。}[catch(。,,){ .. .. ..}]

<?php try {$error = ’Always throw this error’;throw new Exception($error); //創(chuàng)建一個(gè)異常對(duì)象,通過throw語(yǔ)句拋出echo ’Never executed’; //從這里開始,try代碼塊內(nèi)的代碼將不會(huì)再被執(zhí)行 } catch (Exception $e) {echo ‘Caught exception: ’.$e->getMessage().'n'; //輸出捕獲的異常消息 } echo ’Hello World’; //程序沒有崩潰繼續(xù)向下執(zhí)行?> 自定義異常

用戶可以用自定義的異常處理類來擴(kuò)展PHP內(nèi)置的異常處理類。以下的代碼說明了在內(nèi)置的異常處理類中,哪些屬性和方法在子類中是可訪問和可繼承的

<?phpclass Exception{ protected $message = ’Unknown exception’; // 異常信息 private $string; // __toString cache protected $code = 0;// 用戶自定義異常代碼 protected $file; // 發(fā)生異常的文件名 protected $line; // 發(fā)生異常的代碼行號(hào) private $trace; // backtrace private $previous;// previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone(); // Inhibits cloning of exceptions. final public function getMessage();// 返回異常信息 final public function getCode(); // 返回異常代碼 final public function getFile(); // 返回發(fā)生異常的文件名 final public function getLine(); // 返回發(fā)生異常的代碼行號(hào) final public function getTrace(); // backtrace() 數(shù)組 final public function getPrevious(); // 之前的 exception final public function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 // Overrideable public function __toString(); // 可輸出的字符串}?>

[注意]如果使用自定義的類來擴(kuò)展內(nèi)置異常處理類,并且要重新定義構(gòu)造函數(shù)的話,建議同時(shí)調(diào)用parent::__construct()來檢查所有的變量是否已被賦值。當(dāng)對(duì)象要輸出字符串的時(shí)候,可以重載__toString() 并自定義輸出的樣式

<?php /* 自定義的一個(gè)異常處理類,但必須是擴(kuò)展內(nèi)異常處理類的子類 */ class MyException extends Exception{//重定義構(gòu)造器使第一個(gè)參數(shù) message 變?yōu)楸仨毐恢付ǖ膶傩詐ublic function __construct($message, $code=0){ //可以在這里定義一些自己的代碼 //建議同時(shí)調(diào)用 parent::construct()來檢查所有的變量是否已被賦值 parent::__construct($message, $code);} public function __toString() { //重寫父類方法,自定義字符串輸出的樣式 return __CLASS__.':['.$this->code.']:'.$this->message.'<br>';}public function customFunction() { //為這個(gè)異常自定義一個(gè)處理方法 echo '按自定義的方法處理出現(xiàn)的這個(gè)類型的異常<br>';} }?>

<?php try { //使用自定義的異常類捕獲一個(gè)異常,并處理異常$error = ’允許拋出這個(gè)錯(cuò)誤’; throw new MyException($error); //創(chuàng)建一個(gè)自定義的異常類對(duì)象,通過throw語(yǔ)句拋出echo ’Never executed’; //從這里開始,try代碼塊內(nèi)的代碼將不會(huì)再被執(zhí)行 } catch (MyException $e) {//捕獲自定義的異常對(duì)象echo ’捕獲異常: ’.$e;//輸出捕獲的異常消息$e->customFunction(); //通過自定義的異常對(duì)象中的方法處理異常 } echo ’你好呀’; //程序沒有崩潰繼續(xù)向下執(zhí)行?>

來自:http://www.cnblogs.com/xiaohuochai/p/6087997.html

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 91精品综合久久久久m3u8 | 日韩精品视频美在线精品视频 | 欧美成人手机视频 | 巨大热杵在腿间进进出出视频 | 国产图片亚洲精品一区 | 日本欧美一级二级三级不卡 | 国产一级片免费观看 | 在线观看日本亚洲一区 | 中文字幕av一区二区三区 | 久久国产精品久久国产精品 | 国产成年 | 亚洲视频 欧美视频 | 午夜爽视频 | 亚洲 欧美 成人日韩 | 国产伦精一区二区三区视频 | 天天五月天丁香婷婷深爱综合 | 久久成年片色大黄全免费网站 | 日韩加勒比 | 久色一区| 91九色视频无限观看免费 | 欧美精品高清在线观看 | 成人午夜性a一级毛片美女 成人午夜亚洲影视在线观看 | 久久综合免费 | 国产精品夜色视频一区二区 | 2021国产精品自在拍在线播放 | 国产亚洲福利一区二区免费看 | 成人久久久| 欧美做爰野外在线视频观看 | a级片黄色片 | 午夜影院h | 精品一区二区三区免费爱 | 中文字幕在线视频在线看 | 欧美性另类69xxxx极品 | 99久久免费精品国产免费 | 亚洲干综合 | 国产精品欧美一区二区三区不卡 | 欧美一区综合 | 免费人成黄页在线观看视频国产 | 欧美一级艳片视频免费观看 | 国产日韩一区二区三区在线播放 | 美女视频永久黄网站免费观看国产 |