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

首頁 > 語言 > PHP > 正文

PHP批斗大會之缺失的異常詳解

2024-05-05 00:10:16
字體:
來源:轉載
供稿:網友

故事的開始

這幾天觀察錯誤日志發現有一個數據反序列化的notice錯誤,實際情況我是從緩存中讀取數據然后反序列化,因為反序列化失敗,所以實際每次都是去數據庫取的值。背后性能影響還是挺大的。

缺失的異常

剛開始寫代碼的時候一直不明白為什么要用異常,感覺if else就能搞定了,為什么還要多此一舉,現在反而覺得 php 的異常太少。

對比兩種序列化場景,一個是json,另一個是serialize。

json

在json encode/decode的時候,如果出現異常,可以通過json_last_error()來獲取。

https://www.php.net/manual/en...

這樣的設計只能說勉強夠用,不太符合面向對象的套路。

serialize/unserialize

在使用自帶的序列化和反序列化的時候,相比json的處理,則更加簡單粗暴,沒有函數能拿到最后的錯誤,只會通過自定義的error handler來接管,然后自己去做出一些相應的處理。

為什么要捕獲異常

比如我的代碼比較亂,有的 key 是 json 序列化,有的 key 是 serialize。我們可以將 key 分類。不能確保其他人配置的對應關系是對的,或者有的人忘記了,所以我需要用捕獲異常的方式來兜底,這樣我們的代碼更加健壯一些。當unserialize失敗之后,我們可以嘗試去json_decode,而不是立即返回一個false,從而把請求傳遞到數據庫。

代碼演示

error_reporting(E_ALL);$a = ["a" => 1];class UnSerializeException extends ErrorException{}set_error_handler(function ($severity, $message, $file, $line) {  $info = explode(":", $message);  if ($severity == E_NOTICE) {    if ($info[0] == "unserialize()") {      throw new UnSerializeException($message);    }    return true;  } else {    throw new ErrorException($message, 0, $severity, $file, $line);;  }});try {  $b = unserialize(json_encode($a));} catch (ErrorException $exception) {  var_dump(get_class($exception), $exception->getMessage(), $exception->getTraceAsString()); // 捕獲到了} finally {  restore_error_handler();}try {  $b = unserialize(json_encode($a));} catch (ErrorException $exception) {  var_dump(get_class($exception), $exception->getMessage(), $exception->getTraceAsString()); // 無法捕獲}

輸出結果

string(20) "UnSerializeException"
string(43) "unserialize(): Error at offset 0 of 7 bytes"
string(181) "#0 [internal function]: {closure}(8, 'unserialize(): ...', '/Users/mengkang...', 34, Array)
#1 /Users/mengkang/PhpstormProjects/xxx/test.php(34): unserialize('{"a":1}')
#2 {main}"

Notice: unserialize(): Error at offset 0 of 7 bytes in /Users/mengkang/PhpstormProjects/xxx/test.php on line 42

后記

所以 php 代碼的異常設計還是任重而道遠的,而這些已經設定的“舊的規范”要推翻,需要“勇氣”,畢竟會影響所有的使用者。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品成久久久久三级| 国产精品激情av在线播放| 亚洲精品福利在线| 日韩欧美中文免费| 亚洲国产中文字幕久久网| 蜜臀久久99精品久久久久久宅男| 亚洲乱码av中文一区二区| 久久夜色精品国产| 91热福利电影| 黑人精品xxx一区一二区| 日韩一区二区福利| 国模私拍一区二区三区| 亚洲自拍欧美另类| 日韩av在线免费| 国产一区二区欧美日韩| 亚洲国产精品久久久久秋霞蜜臀| 国产精品热视频| 日韩欧美国产网站| 成人xvideos免费视频| 国产精品久久久久久久久久久久| 日韩激情av在线播放| 91视频国产精品| 一本色道久久综合狠狠躁篇怎么玩| 国产在线视频欧美| 日韩网站免费观看高清| 亚洲激情电影中文字幕| 精品国偷自产在线视频99| 成人a在线观看| 在线观看国产精品日韩av| 日韩视频在线免费观看| 久久理论片午夜琪琪电影网| 精品日韩视频在线观看| 国产有码在线一区二区视频| 久久精品国产欧美激情| 久久久久久国产精品| 菠萝蜜影院一区二区免费| 成人国产精品久久久| 日韩在线视频免费观看高清中文| 国产一区二区三区精品久久久| 欧美巨大黑人极品精男| 精品电影在线观看| 在线成人中文字幕| 欧美视频在线看| 亚洲精品福利在线| 亚州成人av在线| 成人av资源在线播放| 在线亚洲午夜片av大片| 亚洲韩国欧洲国产日产av| 久久久久久久影院| 欧美xxxx18性欧美| 欧美高清电影在线看| xxxxx91麻豆| 欧美激情精品久久久久久蜜臀| 久久97久久97精品免视看| 欧美成人h版在线观看| 国产mv免费观看入口亚洲| 91精品国产综合久久久久久蜜臀| 欧美专区国产专区| 亚洲图片欧洲图片av| 久久夜色精品国产| 欧美日韩综合视频网址| 欧美大学生性色视频| 欧美日韩亚洲一区二区三区| 自拍偷拍免费精品| 久久久久久久久中文字幕| 亚洲最大的免费| 久久福利视频网| 中文字幕欧美精品日韩中文字幕| 777精品视频| 久久精品国产欧美亚洲人人爽| 国产成人综合久久| 亚州av一区二区| 日韩在线观看免费全| 日韩福利伦理影院免费| 欧美一级bbbbb性bbbb喷潮片| 91免费精品国偷自产在线| 欧美一区二区三区图| 日韩精品极品在线观看播放免费视频| 国产在线视频欧美| 亚洲欧洲午夜一线一品| 日韩成人黄色av| 亚洲人在线观看| 久久精品精品电影网| 6080yy精品一区二区三区| 亚洲精品美女久久久久| 日本成人精品在线| 久久久久久久国产| 日韩在线观看免费网站| 国产精品久久久精品| 色哟哟入口国产精品| 成人444kkkk在线观看| 亚洲无限乱码一二三四麻| 日韩精品在线私人| 亚洲a级在线播放观看| 亚洲欧美一区二区三区久久| 久久久精品一区| 国产91亚洲精品| 欧美大片在线免费观看| 久久精品在线播放| 日韩欧美成人精品| 日韩欧美精品中文字幕| 岛国av一区二区| 亚洲黄色片网站| 日韩中文字幕精品| 萌白酱国产一区二区| 久久久久久久999| 国产精品www网站| 久久夜精品香蕉| 久久久久久噜噜噜久久久精品| 国产欧美最新羞羞视频在线观看| 久久精品一区中文字幕| 亚洲国产精品电影在线观看| 欧美色播在线播放| 国产亚洲福利一区| 亚洲韩国欧洲国产日产av| 中文字幕视频在线免费欧美日韩综合在线看| 国产成人高潮免费观看精品| 91在线观看免费高清完整版在线观看| 成人av.网址在线网站| 欧美一区二粉嫩精品国产一线天| 日韩精品视频免费| 成人午夜小视频| 夜夜嗨av色综合久久久综合网| 久久久91精品| 久久综合九色九九| 欧美精品在线免费观看| 91成人福利在线| 另类视频在线观看| 亚洲天堂男人的天堂| 性色av香蕉一区二区| 亚洲成人精品久久| 欧美电影在线观看网站| 免费99精品国产自在在线| 欧美午夜女人视频在线| 欧美乱大交做爰xxxⅹ性3| 国产精品久久久久久av下载红粉| 午夜精品美女自拍福到在线| 亚洲九九九在线观看| 亚洲第一中文字幕| 亚洲午夜精品久久久久久久久久久久| 欧美自拍视频在线| 亚洲free性xxxx护士白浆| 国产一区二区色| 欧美午夜丰满在线18影院| 91在线精品播放| 亚洲成人精品av| 神马久久久久久| 精品美女久久久久久免费| 欧美性xxxx极品高清hd直播| 久久国产精品久久国产精品| 98视频在线噜噜噜国产| 日韩视频亚洲视频| 亚洲一区二区三区视频播放| www.精品av.com| 亚洲xxxxx电影| 日韩精品福利网站| 中文字幕精品在线视频| 欧美中文字幕视频| 亚洲国产成人久久| 狠狠躁夜夜躁人人爽超碰91| 国产精品精品一区二区三区午夜版| 国产精品99导航| 亚洲第一区第一页| 88xx成人精品|