欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

PHP中缺失異常的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹PHP中缺失異常的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

廣德ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

故事的開始


這幾天觀察錯(cuò)誤日志發(fā)現(xiàn)有一個(gè)數(shù)據(jù)反序列化的notice錯(cuò)誤,實(shí)際情況我是從緩存中讀取數(shù)據(jù)然后反序列化,因?yàn)榉葱蛄谢?,所以?shí)際每次都是去數(shù)據(jù)庫(kù)取的值。背后性能影響還是挺大的。

缺失的異常


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

對(duì)比兩種序列化場(chǎng)景,一個(gè)是json,另一個(gè)是serialize。

json


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

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


這樣的設(shè)計(jì)只能說勉強(qiáng)夠用,不太符合面向?qū)ο蟮奶茁贰?/p>

serialize/unserialize


在使用自帶的序列化和反序列化的時(shí)候,相比json的處理,則更加簡(jiǎn)單粗暴,沒有函數(shù)能拿到最后的錯(cuò)誤,只會(huì)通過自定義的error handler來接管,然后自己去做出一些相應(yīng)的處理。

為什么要捕獲異常


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

代碼演示


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()); // 無法捕獲
}

輸出結(jié)果

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中缺失異常的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:PHP中缺失異常的示例分析-創(chuàng)新互聯(lián)
文章URL:http://aaarwkj.com/article18/cchodp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)搜索引擎優(yōu)化、網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
亚洲中文字幕高清无二区| 色呦呦中文字幕在线播放| 日韩精品日本道欧美黄片 | 成人高清乱码一区二区三区| 日韩精品一区伦理视频| 久久精品夜夜夜夜夜久久| 九九视频免费在线播放| 精品国产a级黄毛网站| 可以免费看黄的网久久| av天堂资源地址在线观看| 我要看黄色一级性生活片| 中文字幕日韩人妻av| 国产亚洲欧美精品久久久久久| 午夜毛片免费在线播放| 91激情黑丝在线观看| 国产精品日本一区二区| 欧美制服丝袜亚洲自拍偷拍| 亚洲精品日韩av专区| 深夜av免费在线观看| 日韩不卡的在线视频| 成熟人妻一区二区三区人妻| 日韩不卡在线观看免费| 亚洲欧洲美洲中文天堂| 日本一区二区在线观看视频| 午夜理论片在线观看有码| 亚洲熟妇av一区二区| 日本欧美精品一区二区三区| 夜夜嗨精品免费视频播放| 国产夫妻性生活国产视频| 久久久久久97精品| 日本美女阴部毛茸茸视频| 高清中文字幕一区二区三区| 91无人区一区二区三乱码| 久久精品国产免费夜夜嗨| 国产成人拍国产亚洲精品| 日韩亚洲在线中文字幕| 中文字幕日韩欧美第一页| 久久精品国产亚洲av品| 日韩一区二区三区av| 少妇高潮一区二区三区在线| 亚洲自偷精品视频自拍|