亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP異常處理Exception類

2020-03-22 19:28:18
字體:
來源:轉載
供稿:網友
異常(Exception)用于在指定的錯誤發生時改變腳本的正常流程。 什么是異常? PHP 5 提供了一種新的html' target='_blank'>面向對象的錯誤處理方法。 異常處理用于在指定的錯誤(異常)情況發生時改變腳本的正常流程。這種情況稱為異常。 當異常被觸發時,通常會發生: 當前代碼狀態被保存 代碼執行被切換到預定義的異常處理器函數 根據情況,處理器也許會從保存的代碼狀態重新開始執行代碼,終止腳本執行,或從代碼中另外的位置繼續執行腳本 我們將展示不同的錯誤處理方法: 異常的基本使用 創建自定義的異常處理器 多個異常 重新拋出異常 設置頂層異常處理器異常的基本使用 當異常被拋出時,其后的代碼不會繼續執行,PHP 會嘗試查找匹配的 "catch" 代碼塊。 如果異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那么將發生一個嚴重的錯誤(致命錯誤),并且輸出 "Uncaught Exception" (未捕獲異常)的錯誤消息。 讓我們嘗試拋出一個異常,同時不去捕獲它:
throw new Exception("Value must be 1 or below"); return true;//trigger exceptioncheckNum(2);上面的代碼會獲得類似這樣的一個錯誤: Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in C:/webfolder/test.php:6 Stack trace: #0 C:/webfolder/test.php(12): checkNum(28) #1 {main} thrown in C:/webfolder/test.php on line 6 Try, throw 和 catch 要避免上面例子出現的錯誤,我們需要創建適當的代碼來處理異常。 處理處理程序應當包括: Try - 使用異常的函數應該位于 "try" 代碼塊內。如果沒有觸發異常,則代碼將照常繼續執行。但是如果異常被觸發,會拋出一個異常。 Throw - 這里規定如何觸發異常。每一個 "throw" 必須對應至少一個 "catch" Catch - "catch" 代碼塊會捕獲異常,并創建一個包含異常信息的對象讓我們觸發一個異常:
throw new Exception("Value must be 1 or below"); return true;//在 "try" 代碼塊中觸發異常 checkNum(2); //If the exception is thrown, this text will not be shown echo 'If you see this, the number is 1 or below';//捕獲異常catch(Exception $e) echo 'Message: ' .$e- getMessage();上面代碼將獲得類似這樣一個錯誤: Message: Value must be 1 or below 例子解釋: 上面的代碼拋出了一個異常,并捕獲了它:創建 checkNum() 函數。它檢測數字是否大于 1。如果是,則拋出一個異常。 在 "try" 代碼塊中調用 checkNum() 函數。 checkNum() 函數中的異常被拋出 "catch" 代碼塊接收到該異常,并創建一個包含異常信息的對象 ($e)。 通過從這個 exception 對象調用 $e- getMessage(),輸出來自該異常的錯誤消息不過,為了遵循“每個 throw 必須對應一個 catch”的原則,可以設置一個頂層的異常處理器來處理漏掉的錯誤。 創建一個自定義的 Exception 類 創建自定義的異常處理程序非常簡單。我們簡單地創建了一個專門的類,當 PHP 中發生異常時,可調用其函數。該類必須是 exception 類的一個擴展。這個自定義的 exception 類繼承了 PHP 的 exception 類的所有屬性,您可向其添加自定義的函數。 我們開始創建 exception 類:
getLine().' in '.$this- getFile().': '.$this- getMessage().' is not a valid E-Mail address'; return $errorMsg;$email = "someone@example...com"; //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) //throw exception if email is not valid throw new customException($email);catch (customException $e) //display custom message echo $e- errorMessage();這個新的類是舊的 exception 類的副本,外加 errorMessage() 函數。正因為它是舊類的副本,因此它從舊類繼承了屬性和方法,我們可以使用 exception 類的方法,比如 getLine() 、 getFile() 以及 getMessage()。 例子解釋: 上面的代碼拋出了一個異常,并通過一個自定義的 exception 類來捕獲它: customException() 類是作為舊的 exception 類的一個擴展來創建的。這樣它就繼承了舊類的所有屬性和方法。 創建 errorMessage() 函數。如果 e-mail 地址不合法,則該函數返回一條錯誤消息 把 $email 變量設置為不合法的 e-mail 地址字符串 執行 "try" 代碼塊,由于 e-mail 地址不合法,因此拋出一個異常 "catch" 代碼塊捕獲異常,并顯示錯誤消息多個異常 可以為一段腳本使用多個異常,來檢測多種情況。 可以使用多個 if..else 代碼塊,或一個 switch 代碼塊,或者嵌套多個異常。這些異常能夠使用不同的 exception 類,并返回不同的錯誤消息:
getLine().' in '.$this- getFile().': '.$this- getMessage().' is not a valid E-Mail address';return $errorMsg;$email = "someone@example.com"; //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) //throw exception if email is not valid throw new customException($email); //check for "example" in mail address if(strpos($email, "example") !== FALSE) throw new Exception("$email is an example e-mail");catch (customException $e) echo $e- errorMessage();catch(Exception $e) echo $e- getMessage();例子解釋: 上面的代碼測試了兩種條件,如何任何條件不成立,則拋出一個異常:customException() 類是作為舊的 exception 類的一個擴展來創建的。這樣它就繼承了舊類的所有屬性和方法。 創建 errorMessage() 函數。如果 e-mail 地址不合法,則該函數返回一個錯誤消息。 執行 "try" 代碼塊,在第一個條件下,不會拋出異常。 由于 e-mail 含有字符串 "example",第二個條件會觸發異常。 "catch" 代碼塊會捕獲異常,并顯示恰當的錯誤消息如果沒有捕獲 customException,緊緊捕獲了 base exception,則在那里處理異常。重新拋出異常 有時,當異常被拋出時,您也許希望以不同于標準的方式對它進行處理??梢栽谝粋€ "catch" 代碼塊中再次拋出異常。 腳本應該對用戶隱藏系統錯誤。對程序員來說,系統錯誤也許很重要,但是用戶對它們并不感興趣。為了讓用戶更容易使用,您可以再次拋出帶有對用戶比較友好的消息的異常:
getMessage().' is not a valid E-Mail address.'; return $errorMsg;$email = "someone@example.com"; //check for "example" in mail address if(strpos($email, "example") !== FALSE) //throw exception if email is not valid throw new Exception($email); catch(Exception $e) //re-throw exception throw new customException($email);catch (customException $e) //display custom message echo $e- errorMessage();例子解釋: 上面的代碼檢測在郵件地址中是否含有字符串 "example"。如果有,則再次拋出異常:customException() 類是作為舊的 exception 類的一個擴展來創建的。這樣它就繼承了舊類的所有屬性和方法。 創建 errorMessage() 函數。如果 e-mail 地址不合法,則該函數返回一個錯誤消息。 把 $email 變量設置為一個有效的郵件地址,但含有字符串 "example"。 "try" 代碼塊包含另一個 "try" 代碼塊,這樣就可以再次拋出異常。 由于 e-mail 包含字符串 "example",因此觸發異常。 "catch" 捕獲到該異常,并重新拋出 "customException"。 捕獲到 "customException",并顯示一條錯誤消息。 如果在其目前的 "try" 代碼塊中異常沒有被捕獲,則它將在更高層級上查找 catch 代碼塊。 設置頂層異常處理器 (Top Level Exception Handler) set_exception_handler() 函數可設置處理所有未捕獲異常的用戶定義函數。
getMessage();set_exception_handler('myException');throw new Exception('Uncaught Exception occurred');以上代碼的輸出應該類似這樣: Exception: Uncaught Exception occurred 在上面的代碼中,不存在 "catch" 代碼塊,而是觸發頂層的異常處理程序。應該使用此函數來捕獲所有未被捕獲的異常。異常的規則 需要進行異常處理的代碼應該放入 try 代碼塊內,以便捕獲潛在的異常。 每個 try 或 throw 代碼塊必須至少擁有一個對應的 catch 代碼塊。 使用多個 catch 代碼塊可以捕獲不同種類的異常。 可以在 try 代碼塊內的 catch 代碼塊中再次拋出(re-thrown)異常。簡而言之:如果拋出了異常,就必須捕獲它。以上就是關于PHP異常處理Exception類的全部內容介紹,希望對大家的學習有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91九色视频| 日本欧美一级片| 国产剧情久久久久久| 中文字幕在线日韩| 日韩黄在线观看| 欧美国产第二页| 国产一区二区三区网站| 伊人久久免费视频| 色综合视频网站| 日本国产精品视频| 视频在线观看一区二区| 国产日韩在线免费| 国产91网红主播在线观看| 欧美在线一区二区视频| 久久天天躁狠狠躁老女人| 亚洲欧美日韩第一区| 欧美精品在线免费播放| 国内外成人免费激情在线视频| 97在线观看免费高清| 国产美女扒开尿口久久久| 欧美性少妇18aaaa视频| 2019中文字幕在线免费观看| 日本精品久久电影| 日韩成人中文电影| www.亚洲一区| 2019av中文字幕| 亚洲午夜久久久久久久| 国产精品自产拍高潮在线观看| 日韩高清免费观看| 色综合久久88色综合天天看泰| 日韩av在线电影网| 91精品国产高清久久久久久91| 久久精品国产视频| 亚洲国产日韩欧美在线99| 日韩在线视频观看正片免费网站| 亚洲国产一区二区三区在线观看| 国产精品一区二区电影| 欧洲一区二区视频| 欧美国产在线视频| 亚洲www在线观看| 欧美激情二区三区| 亚洲网站在线看| 欧美精品在线免费| 亚洲综合中文字幕在线| 亚洲国产高清自拍| 欧美高清理论片| 色无极影院亚洲| 欧美夜福利tv在线| 97视频免费在线看| 欧美日韩中文字幕综合视频| 97色在线播放视频| 欧美日韩激情美女| 国产精品久久久久久久久久三级| 在线日韩av观看| www.久久久久久.com| 日本一区二区三区四区视频| 国产精品高潮视频| 成人免费网站在线| 国产精品久久在线观看| 亚洲一区二区三区sesese| 国产精品影院在线观看| 555www成人网| 成人欧美一区二区三区在线湿哒哒| 日韩免费中文字幕| 日韩美女福利视频| 亚洲女人天堂av| 欧美日韩国产123| 一区二区欧美亚洲| 久久国产精品亚洲| 欧美激情精品久久久久久变态| 国产精品va在线播放我和闺蜜| 国产乱人伦真实精品视频| 亚洲国产精品女人久久久| 91免费福利视频| 欧美日韩精品在线观看| 久久国产精品久久久久久久久久| 欧美久久精品午夜青青大伊人| 69久久夜色精品国产7777| 欧美激情性做爰免费视频| 久久久人成影片一区二区三区观看| 亚洲视频网站在线观看| 国产欧美婷婷中文| 91免费看片网站| 日韩a**站在线观看| 日韩精品高清在线观看| 草民午夜欧美限制a级福利片| 亚洲第一色在线| 亚洲综合色激情五月| 国产97在线|亚洲| 91亚洲va在线va天堂va国| 日韩中文字幕在线免费观看| 国产精品7m视频| 97色在线观看免费视频| 亚洲一区制服诱惑| 亚洲电影中文字幕| 亚洲欧美制服第一页| 久久99亚洲精品| 一区二区在线免费视频| 久久免费精品视频| 成人久久一区二区三区| 一区二区三区 在线观看视| 搡老女人一区二区三区视频tv| 在线日韩中文字幕| 亚洲一区久久久| 3344国产精品免费看| 亚洲2020天天堂在线观看| 日本久久亚洲电影| 久久精品国产一区二区三区| 国产精品中文字幕在线| 日av在线播放中文不卡| 精品香蕉一区二区三区| 91国偷自产一区二区三区的观看方式| 另类专区欧美制服同性| 亚洲成年网站在线观看| 一区二区三欧美| 久久69精品久久久久久久电影好| 插插插亚洲综合网| 日韩一区二区久久久| 中文字幕精品久久久久| 国产精品91在线观看| 亚洲欧美精品伊人久久| 国产美女高潮久久白浆| 97在线免费观看| 久久亚洲精品一区二区| 国产在线视频91| 国产精品99久久久久久久久久久久| 欧美激情在线观看视频| 久久天天躁夜夜躁狠狠躁2022| 亚洲电影中文字幕| 日韩免费不卡av| 国产精品入口免费视| 亚洲欧美精品中文字幕在线| 欧美日韩中文在线| 国产精品久久久久久久久久ktv| 日韩精品亚洲元码| 成人国产精品久久久| 久久福利网址导航| 日韩女在线观看| 亚洲欧美成人一区二区在线电影| 国产第一区电影| 亚洲成年网站在线观看| 91免费的视频在线播放| 91精品国产综合久久香蕉的用户体验| 欧美大全免费观看电视剧大泉洋| 久久久久久亚洲精品不卡| 宅男66日本亚洲欧美视频| 欧美第一页在线| 日本精品久久久久影院| 日韩在线视频观看| 成人免费视频网| 成人天堂噜噜噜| www.美女亚洲精品| 日韩av网站导航| 91久久久久久久久久久久久| 91美女高潮出水| 国产成人精品免高潮费视频| 97国产成人精品视频| 精品偷拍一区二区三区在线看| 国产伦精品一区二区三区精品视频| 欧美精品在线第一页| 亚洲视频欧洲视频| 久久亚洲春色中文字幕| 国产69久久精品成人看| 91探花福利精品国产自产在线|