php錯誤處理和php異常處理機制
當我們開發(fā)程序時,有時候程序出現(xiàn)了問題,我們就可以用以下幾種辦法找出錯誤。
開發(fā)階段:開發(fā)時輸出所有的錯誤報告,有利于我們進行程序調(diào)試
運行階段:我們不要讓程序輸出任何一種錯誤報告(不能讓用戶看到(包括懂技術(shù),
不懂技術(shù)的人))
將錯誤報告寫入日志中
一、指定錯誤報告 error_reporting = E_LL
二、關(guān)閉錯誤輸出
display_errors = Off
三、開啟錯誤日志功能 log_errors = On
1.
默認如果不指定錯誤日志位置,則默認寫WEB服務器的日志中
2. 為error_log選項指定 一個文件名(可寫)
3.
寫入到操作系統(tǒng)日志中error_log=syslog
以下代碼示例
當然php還提供了函數(shù)error_get_last()來獲得錯誤信息
函數(shù)定義和用法
error_get_last()函數(shù)獲取最后發(fā)生的錯誤。該函數(shù)以數(shù)組的形式返回最后發(fā)生的錯誤。返回的數(shù)組包含 4 個鍵和值: [type] - 錯誤類型 [message] - 錯誤消息 [file] - 發(fā)生錯誤所在的文件 [line] - 發(fā)生錯誤所在的小例子:
輸出: Array ( [type] => 8 [message] => Undefined variable: test [file] => D:\www\test.php [line] => 2 )所以這樣我們也很方便了。。。這樣是不是對調(diào)試程序和排查錯誤的時候很有幫助呢?
這些錯誤報告級別是錯誤處理程序旨在處理的錯誤的不同的類型:
值 | 常量 | 描述 |
---|---|---|
2 | E_WARNING | 非致命的 run-time 錯誤。不暫停腳本執(zhí)行。 |
8 | E_NOTICE |
Run-time 通知。 腳本發(fā)現(xiàn)可能有錯誤發(fā)生,但也可能在腳本正常運行時發(fā)生。 |
256 | E_USER_ERROR | 致命的用戶生成的錯誤。這類似于程序員使用 PHP 函數(shù) trigger_error() 設置的 E_ERROR。 |
512 | E_USER_WARNING | 非致命的用戶生成的警告。這類似于程序員使用 PHP 函數(shù) trigger_error() 設置的 E_WARNING。 |
1024 | E_USER_NOTICE | 用戶生成的通知。這類似于程序員使用 PHP 函數(shù) trigger_error() 設置的 E_NOTICE。 |
4096 | E_RECOVERABLE_ERROR | 可捕獲的致命錯誤。類似 E_ERROR,但可被用戶定義的處理程序捕獲。(參見 set_error_handler()) |
8191 | E_ALL |
所有錯誤和警告,除級別 E_STRICT 以外。 (在 PHP 6.0,E_STRICT 是 E_ALL 的一部分) |
php異常處理機制
定義:
異常處理: 意外,是在程序運行過程中發(fā)生的意料這外的事,使用異常改變腳本正常流程
語法格式:
try { //...} catch(Exception $e) { //...}
PHP中try{}catch{}是異常處理.
將要執(zhí)行的代碼放入TRY塊中,如果這些代碼執(zhí)行過程中某一條語句發(fā)生異常,則程序直接跳轉(zhuǎn)到CATCH塊中,由$e收集錯誤信息和顯示.
PHP中try{}catch{}語句
為了進一步處理異常,我們需要使用PHP中try{}catch{}----包括Try語句和至少一個的catch語句。任何調(diào)用 可能拋出異常的方法的代碼都應該使用try語句。Catch語句用來處理可能拋出的異常。例子:
我寫一段代碼:
自己定義一個異常類
作用:就是寫一個或多個方法解決當發(fā)生這個異常時的處理方式
1. 自己定義異常類,必須是Exception(內(nèi)置類)的子類,
可以查看PHP手冊里面Exception(內(nèi)置類)的使用方法
2. Exception類中的只有構(gòu)造方法和toString()可以重寫,
其它都final
getMessage()." "; //getMessage() 是PHP里面內(nèi)置的方法,可以直接調(diào)用 $file=$e->open(); }
下面將代碼進行整理以及多個異常處理方法:
新文章:
- CentOS7下圖形配置網(wǎng)絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003