欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP錯誤和異常處理功能模塊示例

 更新時間:2016年11月12日 12:25:38   作者:鄭宏鑫erke  
這篇文章主要介紹了PHP錯誤和異常處理功能模塊,較為詳細(xì)的分析了php常見的錯誤級別與錯誤處理相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP錯誤和異常處理功能模塊。分享給大家供大家參考,具體如下:

一、錯誤類型和基本的調(diào)試方法

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

語法錯誤:

語法錯誤最常見,并且也容易修復(fù)。如:代碼中遺漏一個分號。這類錯誤會阻止腳本的執(zhí)行。

運(yùn)行時錯誤:

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

邏輯錯誤:

這種錯誤最麻煩,既不阻止腳本執(zhí)行,也不輸出錯誤消息。
一個異常則是在一個程序執(zhí)行過程中出現(xiàn)的一個例外,或是一個事件,它中斷了正常指令的運(yùn)行,跳轉(zhuǎn)到其他程序模塊繼續(xù)執(zhí)行。

PHP的錯誤報(bào)告級別

E_ALL //所有信息值:6143
E_ERROR//致命的運(yùn)行時錯誤值:1
E_RECOVERABLE_ERROR //接近致命的運(yùn)行時錯誤,若未被捕獲則視同E_ERROR 值:4096
E_WARNING //運(yùn)行時警告(非致命性錯誤) 值:2
E_PARSE//編譯時解析錯誤值:4
E_NOTICE //運(yùn)行時提醒(經(jīng)常是bug,也可能是有意的) 值:8
E_STRICT//編碼標(biāo)準(zhǔn)化警告(建議如何修改以向前兼容) 值:2048
E_CORE_ERROR //PHP啟動時初始化過程中的致命錯誤值:16
E_CORE_WARNING //PHP啟動時初始化過程中的警告(非致命性錯)值:32
E_COMPILE_ERROR //編譯時致命性錯值:64
E_COMPILE_WARNING //編譯時警告(非致命性錯) 值:128
E_USER_ERROR //用戶自定義的致命錯誤值:256
E_USER_WARNING //用戶自定義的警告(非致命性錯誤) 值:512
E_USER_NOTICE //用戶自定義的提醒(經(jīng)常是bug) 值:1024

php.ini配置文件

display_errors: 是否開啟PHP輸出錯誤報(bào)告的功能
值為:On(默認(rèn)輸出錯誤報(bào)告)、Off(屏蔽所有錯誤信息)
在PHP腳本中可調(diào)用ini_set( )函數(shù),動態(tài)設(shè)置php.ini配置文件.
如:ini_set("display_errors","On"); //顯示所有錯誤信息
error_reporting: 設(shè)置不同的錯誤報(bào)告級別。
error_reporting= E_ALL & ~E_NOTICE
--可以拋出任何非注意的錯誤,默認(rèn)值
error_reporting= E_ERROR | E_PARSE | E_CORE_ERROR
--只考慮致命的運(yùn)行時錯誤、新解析錯誤和核心錯誤。
error_reporting= E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE)
--報(bào)告除用戶導(dǎo)致的錯誤之外的所有錯誤。
在PHP腳本可以通過error_reporting( )函數(shù)動態(tài)設(shè)置錯誤報(bào)告級別。如:error_reporting(E_ALL);]

設(shè)置錯誤級別實(shí)例:error.php

<h2>測試錯誤報(bào)告</h2>
<?php
/*開啟php.ini中的display_errors指令,只有該指令開啟如有錯誤報(bào)告才能輸出*/
ini_set('display_errors',1);
/*通過error_reporting()函數(shù)設(shè)置在本腳本中,輸出所有級別的錯誤報(bào)告*/
error_reporting(E_ALL);
/*“注意(notice)”的報(bào)告,不會阻止腳本的執(zhí)行,并且不一定是一個問題*/
getType($var);//調(diào)用函數(shù)時提供的參數(shù)變量沒有在之前聲明
/*“警告(warning)”的報(bào)告,指示一個問題,但是不會阻止腳本的執(zhí)行*/
getType();//調(diào)用函數(shù)時沒有提供必要的參數(shù)
/*“錯誤(error)”的報(bào)告,它會終止程序,腳本不會再向下執(zhí)行*/
get_Type();//調(diào)用一個沒有被定義的函數(shù)
?>

PHP錯誤報(bào)告行為的配置指令

display_startup_errors= Off
是否顯示PHP引擎在初始化時遇到的錯誤。
log_errors= On
決定日志語句記錄的位置。
error_log(默認(rèn)null)
指定錯誤寫進(jìn)的文件或記錄錯誤日志于系統(tǒng)日志syslog。
Log_errors_max_len=1024
每個日志項(xiàng)的最大長度,單位是字節(jié)。0表示最大。

二、錯誤日志

兩種方式記錄錯誤日志:

使用指定的文件記錄錯誤報(bào)告日志
錯誤日志記錄到操作系統(tǒng)的日志里

使用指定的文件記錄錯誤報(bào)告日志

1、先配置php.ini:

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

2、使用函數(shù):在php文件中使用error_log()來記錄日志,就可以將信息寫入到myerror.log文件中

如:

error_log("登錄失敗了!");

3、使用四個函數(shù)來記錄日志:

define_syslog_variables();//為系統(tǒng)日志初始化配置
openlog();//打開一個日志鏈接
syslog();//發(fā)送一條日志

例子

<?php
if(!Ora_Logon($username, $password)){
error_log("Oracle數(shù)據(jù)庫不可用!", 0);
//將錯誤消息寫入到操作系統(tǒng)日志中
}
if(!($foo=allocate_new_foo()){
error_log("出現(xiàn)大麻煩了!", 1, "webmaster@www.mydomain.com"); //發(fā)送到管理員郵箱中
}
error_log("搞砸了!",2, "localhost:5000");
//發(fā)送到本機(jī)對應(yīng)5000端口的服務(wù)器中
error_log("搞砸了!", 3, "/usr/local/errors.log");
//發(fā)送到指定的文件中
?>

<?php
define_syslog_variables();
openlog("PHP5", LOG_PID , LOG_USER);
syslog(LOG_WARNING, "警告報(bào)告向syslog中發(fā)送的演示,警告時間:".date("Y/m/dH:i:s"));
closelog();
?>

查看日志:如windows系統(tǒng),通過右擊“我的電腦”-> 選擇管理選項(xiàng)->在系統(tǒng)工具菜單中選擇事件查看器->在應(yīng)用程序選項(xiàng)中即可看到日志了

三、異常處理

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

異常處理格式:

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

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP錯誤與異常處理方法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php中的異常和錯誤淺析

    php中的異常和錯誤淺析

    PHP錯誤是屬于php程序自身的問題,一般是由非法的語法,環(huán)境問題導(dǎo)致的,使得編譯器無法通過檢查甚至無法運(yùn)行的情況。PHP異常一般是業(yè)務(wù)邏輯上出現(xiàn)的不合預(yù)期、與正常流程不同的狀況,不是語法錯誤。本文介紹了php中異常和錯誤的相關(guān)資料,需要的朋友可以參考下。
    2017-05-05
  • PHP 99乘法表的幾種實(shí)現(xiàn)代碼

    PHP 99乘法表的幾種實(shí)現(xiàn)代碼

    對于剛學(xué)PHP的新手來講,用php寫九九乘法表無疑是非常經(jīng)典的一道練習(xí)題,但不要小看這道練習(xí)題,它對于邏輯的考驗(yàn)還是相當(dāng)?shù)轿坏模@里腳本之家小編就為大家分享一下
    2020-10-10
  • PHP用反撇號執(zhí)行外部命令

    PHP用反撇號執(zhí)行外部命令

    shell_exec() 命令行實(shí)際上僅是反撇號 ` 操作符的變體,如果您編寫過 shell 或 Perl 腳本,您就知道可以在反撇號操作符內(nèi)部捕捉其他命令的輸出。
    2015-04-04
  • php5中date()得出的時間為什么不是當(dāng)前時間的解決方法

    php5中date()得出的時間為什么不是當(dāng)前時間的解決方法

    從php5.10開始,php中加入了時區(qū)的設(shè)置,在php中顯示的時間都是格林威治標(biāo)準(zhǔn)時間,這就造成了我們 中國的用戶會差八個小時的問題!
    2008-06-06
  • 簡述php環(huán)境搭建與配置

    簡述php環(huán)境搭建與配置

    本文主要對php的環(huán)境搭建與配置進(jìn)行步驟介紹。文章中標(biāo)出了重點(diǎn),方便大家閱讀,需要的朋友可以參考下
    2016-12-12
  • php中cURL?error?60:SSL?certificate?problem:?unable?to?get?local?issuer?certificate問題的解決方法

    php中cURL?error?60:SSL?certificate?problem:?unable?to?

    PHP中cURL錯誤60通常表示SSL證書問題,即無法獲取本地頒發(fā)機(jī)構(gòu)證書,這通常是由于cURL無法驗(yàn)證遠(yuǎn)程服務(wù)器的SSL證書導(dǎo)致的,本給大家介紹了如何解決php中cURL?error?60,需要的朋友可以參考下
    2023-12-12
  • php生成gif動畫的方法

    php生成gif動畫的方法

    這篇文章主要介紹了php合成或者創(chuàng)建gif動畫,并提供了兩個實(shí)例,感興趣的小伙伴們可以參考一下
    2015-11-11
  • PHP實(shí)現(xiàn)支持SSL連接的SMTP郵件發(fā)送類

    PHP實(shí)現(xiàn)支持SSL連接的SMTP郵件發(fā)送類

    這篇文章主要介紹了PHP實(shí)現(xiàn)支持SSL連接的SMTP郵件發(fā)送類,實(shí)例分析了php實(shí)現(xiàn)smtp郵件發(fā)送類的原理與技巧,以及支持SSL連接的方法,需要的朋友可以參考下
    2015-03-03
  • php smtp實(shí)現(xiàn)發(fā)送郵件功能

    php smtp實(shí)現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了php smtp實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹

    當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹

    這篇文章主要介紹了當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹,本文還給出了iconCube的安裝教程,需要的朋友可以參考下
    2014-09-09

最新評論