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

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ì)
1区2区3区精品视频| 日韩欧美 高清一区| 国产国语久久91老女人| 欧美高清在线观看视频| 夫妻性生活一级片视频| 欧美久久久久综合一区| 天天爽天天看天天射天天操 | 少妇又色又爽又高潮欧美| 亚洲成av人片又粗又长| 国产午夜精品一区二区三区| 国产精品国产三级丝袜| 日韩精品电影一二三| 欧美黄色免费电影网站| 国产亚洲综合另类色专区| 亚洲精品第一国产综合| 国产精品视频黄色一区| 亚洲人成免费观看网站| 欧美一区二区三区中文字幕| 亚洲精品一区二区牛仔裤| 精品国产av一区二区三广区| 国产又黄又爽不卡的视频| 午夜国产精品福利一二| 国产老熟女高潮视频| 午夜精品四季av日日骚| 亚洲精品成人免费电影| 一本久道久久综合狠狠老| 91香蕉国产精品日韩| 天天操天天干蜜桃av| 午夜福利在线视频观看| 亚洲精品一二三区免费| 亚洲综合五月天色婷婷| 天堂av在线资源观看| 亚洲精品第一国产综合| 99热成人精品热久久| 亚洲精品一品区二品区三区| 国产亚洲中文久久网久久| 日日干天天日夜夜操| 男人自拍天堂在线视频| 国产久精品热看久品热久热| 亚洲欧美日韩精品成人| 亚洲精品乱码精品乱码不卡|