1. 程式人生 > >PHP異常處理以及自定義頂級異常處理器

PHP異常處理以及自定義頂級異常處理器

自定義兩個方法,新增使用者addUser()和修改使用者updateUser(),給一個使用者名稱的引數;

通常的做法:

function A(){
    $res1=addUser('yonghu');
    $res2=updateUser('小米');
    if ($res1 && $res2) {
        echo "成功";
    }else{
        echo "失敗";
    }
}
A();
function addUser($username){
if ($username=='yonghu') {
        return
true; }else{ return false; } } function updateUser($username){ if($username=='小米'){ return true; }else{ return false; } }

這樣的弊端就是程式碼冗餘,如果再新增一個方法,也需要同樣的驗證,則需要修改function A()的判斷條件

PHP 5 提供了一種新的面向物件的錯誤處理方法。

案例如下

try{
    addUser("小明");
    updateUser("小米"
); } //catch 捕獲Exception 是異常類 是php定義好的一個類 catch (Exception $e){ echo "失敗資訊=".$e->getMessage(); } function addUser($username){ if ($username=="小米") { }else{ throw new Exception("新增失敗"); } } function updateUser($username){ if ($username=="小米") { }else{ throw
new Exception("修改失敗"); } }

當addUser()丟擲一個異常,則catch就會去捕獲這個異常。

PHP還提供了一個頂級異常處理器處理的方法

案例如下:

class My_Exception1 extends Exception{

}
class My_Exception2 extends Exception{

}
function A($a){
    if($a>20){
    throw new My_Exception1("a");       
    }

}
function B($b){
    if ($b<15) {
            throw new My_Exception2("b");
    }
}
function C(){
    try{
        A(10);
        B(10);

    }catch(My_Exception1 $e1){
        echo "錯誤資訊:".$e1->getMessage();
    }catch(My_Exception2 $e2){
        echo "錯誤資訊:".$e2->getMessage();
    }
}
C();

執行結果:

錯誤資訊:b

這裡的 My_expection1 和 My_expection2 是開發者自定義的異常處理函式,既頂級異常處理器,只有當程式中沒有函式來處理異常才有頂級異常處理器來處理異常,如果沒有定義頂級異常處理器,則由系統預設的異常處理器來處理異常。

相關推薦

PHP異常處理以及定義頂級異常處理器

自定義兩個方法,新增使用者addUser()和修改使用者updateUser(),給一個使用者名稱的引數; 通常的做法: function A(){ $res1=addUser('yonghu'); $res2=updateUser('小米'

Java IO流中的異常處理以及定義異常例項

文章目錄 異常 自定義異常例項 finally中特殊情況例項 異常 1、 Throwable類  a) 嚴重問題:Error,比如說記憶體不夠,一般程式中不進

Java IO流中的異常處理以及定義異常例項

異常 1、 Throwable類  a) 嚴重問題:Error,比如說記憶體不夠,一般程式中不進行處理  b) 問題:Exception   i. 編譯期問題:不是RunTimeException的異常,不處理編譯不能通過,因此必須處理   ii. 執行期問題

4、php的錯誤異常處理定義異常類)

一、php自帶的異常處理類: <?php class Exception { protected $message; // 異常資訊 protected $code; //

springboot下全域性異常處理定義異常以及定義返回值

1.介紹    全域性異常處理,是mvc的一個新特性,避免大量的重複程式碼    自定義異常 , 方便使用,丟擲自己定義好的異常,配合全域性異常處理使用,效果更佳    自定義返回值,類似異常,返回自己定義的返回值 2.全域性異常處理重點知識 1. 新建一

2、php的錯誤異常處理定義php的錯誤處理方式)

 一、概述 自定義錯誤報告的處理方式,可以完全繞過標準的php錯誤處理函式,這樣就可以按照自己定義的 格式列印錯誤報告,或改變錯誤報告列印的位置,以下幾種情況可以考慮自定義錯誤處理。

Laravel之加密解密/日誌/異常處理定義錯誤

文件中 例如 tom 處理器 crypt return cat 情況 而不是 一.加密解密 1.加密Crypt::encrypt($request->secret) 2.解密try {   $decrypted = Crypt::decrypt($encryptedV

七天學會ASP.NET MVC (六)——線程問題、異常處理定義URL

d+ mit nes 如何 bus blog edi default 繼續 本節又帶了一些常用的,卻很難理解的問題,本節從文件上傳功能的實現引出了線程使用,介紹了線程饑餓的解決方法,異常處理方法,了解RouteTable自定義路徑 。 目錄 實驗27—

10.異常處理定義異常、斷言

類型 出現 color spa 同時 就是 put exception valid 什麽是異常: 當程序遭遇某些非正常問題的時候就會拋出異常:比如int()只能處理能轉化成int的對象,如果傳入一個不能轉化的對象就會報錯並拋出異常 常用的異常有: ValueError :

接口--全局異常配置--異常處理handle定義配置

width log eight 需要 配置文件 handle info body src 在重寫了異常處理的handle類之後需要配置配置文件中handle的路徑: 接口--全局異常配置--異常處理handle自定義配置

Spring Boot-錯誤處理定義全域性異常處理機制

正常的Web應用開發時,需要考慮到應用執行發生異常時或出現錯誤時如何來被處理,例如捕獲必要的異常資訊,記錄日誌方便日後排錯,友好的使用者響應輸出等等。 當然應用發生錯誤,有可能是應用自身的問題,也有可能是客戶端操作的問題。 Spring Boot預設提供了一種錯誤處理機制。 預設錯誤處理機制

PHP (Yii2) 定義業務異常類(可支援返回任意自己想要的型別資料)

public function beforeAction($action) { return parent::beforeAction($action); } public function runAction($id, $params = []) {

SpringMVC中的異常處理(全域性異常處理定義異常類進行統一處理)

前言: WEB開發中,總會有一些不可預料的錯誤,對於一些課預測的異常,我們可以自定義一個異常類,然後再載入個全域性異常處理器,對系統中出現的異常進行統一的處理。 注意:當你在Springmvc配置檔案中配置全域性異常處理器的時候,只要如下配置即可: <!

c#基礎之異常處理定義異常

一、什麼是c#中的異常?         異常是程式執行中發生的錯誤,異常處理是程式的一部分。c#中的異常類主要是直接或者間接的派生於 System.Exception類 ,也就是說System.Exception類是所有預定義的系統異常的基類。錯誤的出現並不總是編寫

七天學會ASP.NET MVC (六)——執行緒問題、異常處理定義URL

本文參考自:http://www.codeproject.com/Articles/1002109/Learn-MVC-Project-in-days-Day-6 轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。   本節又帶了一些常用的,卻很難理解的問

Springboot的異常處理定義異常

園友們好,元旦很快就到來了,提前祝各位園友們元旦快樂,今天給大家分享一個工作中必用一個知識點,就是使用列舉構建自定義異常並應用於springboot的異常處理器。開始之前我先把這個案例的結構大致說明一下: 1、使用idea建立一個springboot的Gradle/Maven專案,引入web模組即可(由於案

Java程式設計中Springboot的異常處理定義異常處理教程

元旦很快就到來了,提前祝各位元旦快樂,今天給大家分享一個工作中必用一個知識點,就是在Java開發中使用列舉構建自定義異常並應用於springboot的異常處理器。 開始之前我先把這個案例的結構大致說明一下: 1、使用idea建立一個springboot的Gradle/Maven專案,引入we

Springboot2.0全域性異常捕捉處理定義全域性異常處理

一,全域性異常捕捉處理 新建MyControllerAdvice類,建在包下都有作用: import org.springframework.web.bind.annotation.Contro

js 系統教程-17-js 語法之異常處理-error,定義異常,try catch finally

目錄 錯誤處理機制 Error 例項物件 JavaScript 解析或執行時,一旦發生錯誤,引擎就會丟擲一個錯誤物件。JavaScript 原生提供Error建構函式,所有丟擲的錯誤都是這個建構函式的例項。 var err = new

spring boot 全域性異常處理定義異常

全域性異常處理:定義一個處理類,使用@ControllerAdvice註解。@ControllerAdvice註解:控制器增強,一個被@Component註冊的元件。配合@ExceptionHandler來增強所有的@requestMapping方法。例如:@Exceptio