日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php若$a没定义默认是,PHP之错误处理详解

發布時間:2023/12/9 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php若$a没定义默认是,PHP之错误处理详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP之錯誤處理詳解

錯誤報告

PHP程序的錯誤發生一般歸屬于下列三個領域:1、語法錯誤

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

2、運行時錯誤

這種錯誤一般不會阻止PHP腳本的執行,但會阻止當前要做的事情。輸出一條錯誤,但php腳本繼續執行

3、邏輯錯誤

這種錯誤最麻煩,既不阻止腳本執行,也不輸出錯誤消息

[注意]若將php.ini配置文件中的display_errors從默認的on設置為off,將不顯示任何錯誤

在PHP腳本中可調用ini_set()函數,動態設置php.ini配置文件

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

錯誤級別

實際上,表格中的13個錯誤類型可以分為3類:注意級別、警告級別和錯誤級別。一般地,在開發過程中,忽略注意級別的錯誤<?php

getType($a);//未定義變量,注意級別

echo "1111111111111111
"; getType();//未傳入參數,警告級別

echo "222222222222222222222
";

getType3();//函數名錯誤,錯誤級別

echo "333333333333333333333
";

?>

錯誤處理

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

錯誤級別默認為提示所有級別的錯誤:error_reporting = E_ALL

把error_reporting = E_ALL改為error_reporting = E_ALL & ~E_NOTICE 表示不提示注意級別的錯誤。然后,重啟服務生效

error_reporting = E_ALL & ~E_NOTICE 拋出任何非注意的錯誤,默認值error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR 只考慮致命的運行時錯誤、新解析錯誤和核心錯誤error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) 報告除用戶導致的錯誤之外的所有錯誤

2、第二種錯誤處理方法是使用錯誤處理函數

在PHP腳本可以通過error_reporting( )函數動態設置錯誤報告級別<?php

error_reporting(E_ALL & ~E_NOTICE);

getType($a);//注意級別

echo "1111111111111111
";

getType();//警告級別

echo "222222222222222222222
";

getType3();//錯誤級別

echo "333333333333333333333
";?>

自定義錯誤處理

自定義錯誤報告的處理方式,可以完全繞過標準的PHP錯誤處理函數,這樣就可以按自己定義的格式打印錯誤報告,或改變錯誤報告打印的位置,以下幾種情況可以考慮自定義錯誤處理:1、記下錯誤的信息,及時發現一些生產環境出現的問題;2、屏蔽錯誤;3、控制錯誤的輸出; 4、作為調試工具

使用set_error_handler()函數來設置用戶自定義錯誤處理<?php

//error_reporting(E_ALL & ~E_NOTICE);

//在php中注冊一個函數來處理錯誤報告,替代默認的方式

set_error_handler("myerrorfun");

$mess = ""; //自定義錯誤報告處理函數

function myerrorfun($error_type, $error_message, $error_file, $error_line) {

global $mess;

$mess.="發生錯誤級別為{$error_type}類型, 錯誤消息{$error_message}, 在文件{$error_file}中, 第{$error_line}行。
";

} getType($a);

echo "1111111111111111
";

getType();

echo "222222222222222222222
";

echo "--------------------------------------------
";

echo $mess;

?>

錯誤日志

一般地,程序都會保存錯誤日志,用來記錄程序運行時的錯誤信息。且錯誤日志都有其默認的存儲位置。對于錯誤信息和錯誤日志的位置,我們都可以進行修改

在PHP.ini配置文件中,有以下幾項可以對錯誤日志進行設置

error_reporting = E_ALL //將向PHP發送每個錯誤display_errors=Off //不顯示錯誤報告log_errors=On //決定日志語句記錄的位置log_errors_max_log=1024 //每個日志項的最大長度error_log=G:/myerror.log //指定錯誤寫進的文件

在php文件中,我們可以使用函數error_log()來自定義錯誤信息<?phperror_log ("登錄失敗了!");?>

異常處理

異常(Exception)處理用于在指定的錯誤發生時改變腳本的正常流程,是PHP5中的一個新的重要特性。異常處理是一種可擴展、易維護的錯誤處理機制,并提供了一種新的面向對象的錯誤處理方式try{

使用try去包含可能會發生異常的代碼

一旦出現異常try進行捕獲異常,交給catch處理。

拋出異常語句:throw 異常對象。

}catch(異常對象參數){

在這里做異常處理。

}[catch(。,,){

.. .. ..

}]<?php

try { $error = 'Always throw this error'; throw new Exception($error);

//創建一個異常對象,通過throw語句拋出

echo 'Never executed';

//從這里開始,try代碼塊內的代碼將不會再被執行

} catch (Exception $e) { echo ‘Caught exception: ’.$e->getMessage()."

"; //輸出捕獲的異常消息

} echo 'Hello World'; //程序沒有崩潰繼續向下執行?>

自定義異常

用戶可以用自定義的異常處理類來擴展PHP內置的異常處理類。以下的代碼說明了在內置的異常處理類中,哪些屬性和方法在子類中是可訪問和可繼承的<?phpclass Exception{

protected $message = 'Unknown exception'; // 異常信息

private $string; // __toString cache

protected $code = 0; // 用戶自定義異常代碼

protected $file; // 發生異常的文件名

protected $line; // 發生異常的代碼行號

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(); // 返回發生異常的文件名

final public function getLine(); // 返回發生異常的代碼行號

final public function getTrace(); // backtrace() 數組

final public function getPrevious(); // 之前的 exception

final public function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息

// Overrideable

public function __toString(); // 可輸出的字符串}?>

[注意]如果使用自定義的類來擴展內置異常處理類,并且要重新定義構造函數的話,建議同時調用parent::__construct()來檢查所有的變量是否已被賦值。當對象要輸出字符串的時候,可以重載__toString() 并自定義輸出的樣式<?php

/* 自定義的一個異常處理類,但必須是擴展內異常處理類的子類 */

class MyException extends Exception{

//重定義構造器使第一個參數 message 變為必須被指定的屬性

public function __construct($message, $code=0){

//可以在這里定義一些自己的代碼

//建議同時調用 parent::construct()來檢查所有的變量是否已被賦值

parent::__construct($message, $code);

}

public function __toString() {

//重寫父類方法,自定義字符串輸出的樣式

return __CLASS__.":[".$this->code."]:".$this->message."
";

} public function customFunction() {

//為這個異常自定義一個處理方法

echo "按自定義的方法處理出現的這個類型的異常
";

}

}?><?php

try { //使用自定義的異常類捕獲一個異常,并處理異常

$error = '允許拋出這個錯誤';

throw new MyException($error);

//創建一個自定義的異常類對象,通過throw語句拋出

echo 'Never executed';

//從這里開始,try代碼塊內的代碼將不會再被執行

} catch (MyException $e) { //捕獲自定義的異常對象

echo '捕獲異常: '.$e; //輸出捕獲的異常消息

$e->customFunction(); //通過自定義的異常對象中的方法處理異常

} echo '你好呀'; //程序沒有崩潰繼續向下執行?>

相關參考:php教程

總結

以上是生活随笔為你收集整理的php若$a没定义默认是,PHP之错误处理详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。