php錯誤處理以及php的異常處理機制

來源:互聯網
上載者:User

php錯誤處理

當我們開發程式時,有時候程式出現了問題,我們就可以用以下幾種辦法找出錯誤。

開發階段:開發時輸出所有的錯誤報表,有利於我們進行程式調試

運行階段:我們不要讓程式輸出任何一種錯誤報表(不能讓使用者看到(包括懂技術, 不懂技術的人))

將錯誤報表寫入日誌中

一、指定錯誤報表 error_reporting = E_LL

二、關閉錯誤輸出 display_errors = Off

三、開啟錯誤記錄檔功能 log_errors = On

1. 預設如果不指定錯誤記錄檔位置,則預設寫WEB伺服器的日誌中

2. 為error_log選項指定 一個檔案名稱(可寫)

3. 寫入到作業系統日誌中error_log=syslog

以下程式碼範例

<span style="font-family:SimSun;font-size:14px;"><?php  //  error_reporting(E_ALL);  /// ini_set("display_errors", "off");  //  ini_set("error_log", "syslog");  //  ini_set("MAX_FILEUPLOAD", 200000000);  //  echo ini_get("upload_max_filesize");  //  error_log("this is a error message!!!!");      getType($var);   //注意      getType();  //警告      getTye();  //錯誤  會終止程式運行      echo "###########################<br>";   ?></span>

當然php還提供了函數error_get_last()來獲得錯誤資訊函數定義和用法

error_get_last()函數擷取最後發生的錯誤。

該函數以數組的形式返回最後發生的錯誤。

返回的數組包含 4 個鍵和值:

[type] - 錯誤類型

[message] - 錯誤訊息

[file] - 發生錯誤所在的檔案

[line] - 發生錯誤所在的

小例子:

<span style="font-family:SimSun;font-size:14px;"><?php echo $test; print_r(error_get_last()); ?>輸出:  Array ( [type] => 8 [message] => Undefined variable: test [file] => D:\www\test.php [line] => 2 )</span>

php5.4以後也提供了PHP預定義變數$php_errormsg

$php_errormsg — 前一個錯誤資訊

$php_errormsg 變數包含由 PHP 產生的最新錯誤資訊。這個變數只在錯誤發生的範圍內可用,並且要求track_errors 配置項是開啟的(預設是關閉的)。

例子:

<?php  @strpos();  echo $php_errormsg;  ?>

會輸出:

Wrong parameter count for strpos()

所以這樣我們也很方便了。。。這樣是不是對偵錯工具和排查錯誤的時候很有協助呢?

這些錯誤報表層級是錯誤處理程式旨在處理的錯誤的不同的類型:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.