php中的異常處理機制

來源:互聯網
上載者:User
在java程式設計語言中,有一套比較完善的異常處理機制,而且內部已經封裝的比較好了。php中的異常處理機制卻沒有那麼強大和完善,那它是如何?的呢,是把每個異常當成錯誤來處理的嗎?

回複內容:

在java程式設計語言中,有一套比較完善的異常處理機制,而且內部已經封裝的比較好了。php中的異常處理機制卻沒有那麼強大和完善,那它是如何?的呢,是把每個異常當成錯誤來處理的嗎?

PHP 內建了一個基類 Exception,你需要繼承這個類來定義自己的異常。
當異常被觸發時通過 catch 關鍵字來捕獲,進行異常處理。

catch (MyException $e) {     //MyException process here...}

拋出異常可以這樣做:

$myException = new MyException(/*something here*/);throw $myException;

關於前段時間,自己提到的一個php中的異常處理機制問題,由於回答者甚少,筆者只好自己廣搜網路資源以及大拿的文章(尤其參考PHP核心技術與最佳實務一書),現整理如下,如有錯誤,歡迎指出:

在各種語言中,異常和錯誤的概念其實是不一樣的,在PHP中,任何自身錯誤都會觸發一個錯誤,而不是拋出異常(對於一些情況,會同時拋出異常和錯誤!)。在這個意義上,如果像使用異常一樣去處理一些不可預知的情況,是辦不到的。比如,想在資料庫連接打不開時觸發異常,是不可行的,這在PHP中把他作為錯誤拋出,而不會作為異常自動捕獲。

經典除零問題:

try {$a = 5 / 0;echo $a;} catch (Exception $e) {echo $e->getMessage();$a = 123;}echo $a;

輸出結果是:

PHP只有你手動throw拋出異常後,才能捕獲異常(一般是這樣,但也有php異常可以自動捕獲)。

而對於java,它有比較完善的異常處理機制,把一切認為不正常的情況都當作了異常,而PHP卻把他們當成了錯誤,根本原因在於,java裡異常是唯一的錯誤報表方式,而在php中卻不是這樣。通俗一點就是,這兩門語言的設計者對於異常和錯誤的界定存在分歧,什麼是異常,什麼是錯誤,他們的設計者存在不同的觀點而已。

說道異常,就不得不提php中異常的兄弟-----錯誤。php中錯誤的處理比異常的價值大得多,而且php提供了比較強大的錯誤處理函數,詳細請自己查閱手則或者網路資源。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.