PHP系列(七)PHP錯誤異常處理
1、Php錯誤報告級別
1 E_ERROR 致命的執行錯誤。錯誤無法恢復,暫停執行指令碼。
2 E_WARNING 執行時警告(非致命性錯誤)。非致命的執行錯誤,指令碼執行不會停止。
4 E_PARSE 編譯時解析錯誤。解析錯誤只由分析器產生。
8 E_NOTICE 執行時提醒(這些經常是你程式碼中的bug引起的,也可能是有意的行為造成的。)
error_reporting = E_ALL & ~E_NOTICE
2、自定義php錯誤報告方式
set_error_handler(“myerrorfun”);
$mess =””;
function myerrorfun($error_type,$error_message,$error_file,$error_line){
global $mess;
$mess.=”發生錯誤級別為{$error_type}型別、錯誤訊息<b>{$error_message}</b>,在資料夾{$error_file},第{$error_line}行。<br>”;
}
getType($a);
echo”$mess”;
顯示為:發生錯誤級別為8型別、錯誤訊息Undefined variable: a,在資料夾C:AppServwwwindex.php,第9行。
set_error_handler($_type,$_message,$_errfile,$_errline) 函式設定使用者自定義的錯誤處理程式,然後觸發錯誤
3、php記錄錯誤日誌
log_errors = on 開啟php日誌
error_log =syslog 將php日誌寫到系統上去。
error_log = “c:/lamp/php_error.log”;自已指定一個存放目錄、與上面相斥
ini_set(“log_errors”,“on”); 在php開發檔案裡設定
try{
echo”開始”;
run();
}catch(Exception $e){
echo$e->getMessage().”<br>”;
}
//當try{}裡面不成功就丟擲catch裡面的異常
4、自定義異常類
//自定義異常類、必須是系統類Exception的子類
//如果繼承Exception類、重寫了構造方法、一定要調一下父類中被覆蓋的方法/
class MyBtException extends Exception{
function__construct($mess){
parent::__construct($mess);
}
functionchangBt(){
echo”換個備胎”;
}
}
try{
throw new MyBtException(“車子胞胎”);
echo”路況很好!”;
}catch(MyBtException $e){
Echo $e->getMessage().”<br>”;
$e->changBt().”<br>”;
}
5、自定義多個異常類
//寫出對應這個異常解決方法, 就是一下正常類的結構
class MyBtException extends Exception{
function__construct($mess) {
parent::__construct($mess);
}
functionchangBt() {
echo”換上備胎!”;
}
}
class WcException extends Exception {
functionpro() {
echo”去公廁<br>”;
}
}
class NoException extends Exception {
functionpro() {
echo”買面色湊合一下!<br>”;
}
}
Class FlException extends Exception {
functionpro() {
echo”走小路!<br>”;
}
}
class Dm {
function gowc($bj) {
if(!$bj){
throw new WcException(“馬桶不好用了”);
}
echo”哈哈,事兒辦的很成功!<br>”;
}
function eat($time) {
if(!$time){
thrownew NoException(“起來晚了,早餐沒了!”);
}
echo”吃的很好!<br>”;
}
function dri($dz) {
if(!$dz){
throw new MyBtException(“爆胎了”);
}
echo”車開的不錯!<br>”;
}
function run($yu) {
if(!$yu){
throw new FlException(“天下雪了, 高速封路了”);
}
echo”高速很好走!<br>”;
}
}
echo “早上起床<br>”;
try{
$dm =new Dm();
// 1. 上廁所 (馬桶不好用了),去公廁
$dm-> gowc(true);
// 2. 吃早餐 (沒有早點),買麵包
$dm-> eat(true);
//3. 開車上班 (爆tai) 換下
$dm->dri(true);
//4. 上高速 (下雪) 小路
$dm->run(false);
} catch(MyBtException $e) { // Exception $e = newException(“);
echo$e->getMessage().”<br>”;
//自定義類中的解決方法呼叫,解決了問題
$e->changBt().”<br>”;
try {
}catch(Exception$e) {
}
} catch(NoException $e) {
echo$e->getMessage().”<br>”;
$e->pro();
} catch(WcException $e) {
echo$e->getMessage().”<br>”;
$e->pro();
} catch(Exception $e) {
echo$e->getMessage().”<br>”;
//$e->pro();
}
echo”到公司開始工作<br>”;
本文轉自 sswqzx 51CTO部落格,原文連結:http://blog.51cto.com/sswqzx/1968854
相關文章
- php錯誤與異常處理方法PHP
- PHP 核心知識點(一)異常和錯誤處理PHP
- PHP錯誤和異常PHP
- PHP 錯誤處理PHP
- php錯誤處理PHP
- PHP 核心 - 異常處理PHP
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- PHP 核心特性 - 錯誤處理PHP
- PHP基礎:異常處理ExceptionPHPException
- PHP基礎之錯誤與異常PHP
- 異常錯誤資訊處理
- Python錯誤處理和異常處理(二)Python
- Spring系列(七) Spring MVC 異常處理SpringMVC
- PHP安裝後錯誤處理PHP
- 常用模組 PHP 錯誤處理PHP
- 淺析php中的異常與錯誤PHP
- rust學習十、異常處理(錯誤處理)Rust
- goang 錯誤&異常處理機制Go
- C++錯誤和異常處理C++
- .NET----錯誤和異常處理機制
- 在vue使用異常處理做錯誤提示Vue
- 前端錯誤收集以及統一異常處理前端
- Python之錯誤異常和檔案處理Python
- 說說你對異常處理和錯誤處理的理解
- laravel5異常錯誤-FatalErrorException in Handler.php line 38LaravelErrorExceptionPHP
- PHP 的異常處理之try和catch用法小結PHP
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- thinkphp原始碼分析(四)—錯誤及異常處理篇PHP原始碼
- PHP捕捉錯誤PHP
- 在大型軟體專案中如何處理錯誤和異常
- PHP 異常類 ExceptionPHPException
- 七、Spring Boot 錯誤處理原理 & 定製錯誤頁面Spring Boot
- 異常篇——異常處理
- Flask教程第七章:錯誤處理Flask
- 異常處理
- [系列] Gin框架 - 自定義錯誤處理框架
- SpringBoot系列——自定義統一異常處理Spring Boot
- SpringMVC學習系列(10) 之 異常處理SpringMVC