pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

      <tfoot id='59BPO'></tfoot>
    1. <legend id='59BPO'><style id='59BPO'><dir id='59BPO'><q id='59BPO'></q></dir></style></legend>
      <i id='59BPO'><tr id='59BPO'><dt id='59BPO'><q id='59BPO'><span id='59BPO'><b id='59BPO'><form id='59BPO'><ins id='59BPO'></ins><ul id='59BPO'></ul><sub id='59BPO'></sub></form><legend id='59BPO'></legend><bdo id='59BPO'><pre id='59BPO'><center id='59BPO'></center></pre></bdo></b><th id='59BPO'></th></span></q></dt></tr></i><div class="b7vx7vn" id='59BPO'><tfoot id='59BPO'></tfoot><dl id='59BPO'><fieldset id='59BPO'></fieldset></dl></div>

      <small id='59BPO'></small><noframes id='59BPO'>

          <bdo id='59BPO'></bdo><ul id='59BPO'></ul>
      1. PHP 錯誤處理:die() Vs trigger_error() Vs throw Exception

        PHP Error handling: die() Vs trigger_error() Vs throw Exception(PHP 錯誤處理:die() Vs trigger_error() Vs throw Exception)
            1. <legend id='eRri5'><style id='eRri5'><dir id='eRri5'><q id='eRri5'></q></dir></style></legend>

                <tfoot id='eRri5'></tfoot>

              1. <small id='eRri5'></small><noframes id='eRri5'>

                  <bdo id='eRri5'></bdo><ul id='eRri5'></ul>
                  <i id='eRri5'><tr id='eRri5'><dt id='eRri5'><q id='eRri5'><span id='eRri5'><b id='eRri5'><form id='eRri5'><ins id='eRri5'></ins><ul id='eRri5'></ul><sub id='eRri5'></sub></form><legend id='eRri5'></legend><bdo id='eRri5'><pre id='eRri5'><center id='eRri5'></center></pre></bdo></b><th id='eRri5'></th></span></q></dt></tr></i><div class="lzlj7zr" id='eRri5'><tfoot id='eRri5'></tfoot><dl id='eRri5'><fieldset id='eRri5'></fieldset></dl></div>
                    <tbody id='eRri5'></tbody>

                  本文介紹了PHP 錯誤處理:die() Vs trigger_error() Vs throw Exception的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  關于 PHP 中的錯誤處理——據我所知有 3 種樣式:

                  In regards to Error handling in PHP -- As far I know there are 3 styles:

                  1. die()exit() 樣式:

                  $con = mysql_connect("localhost","root","password");
                  
                  if (!$con) {
                   die('Could not connect: ' . mysql_error());
                  }
                  

                • 拋出異常樣式:

                   if (!function_exists('curl_init')) {
                  
                        throw new Exception('need the CURL PHP extension. 
                                             Recomplie PHP with curl');
                      }
                  

                • trigger_error() 樣式:

                  if(!is_array($config) && isset($config)) {
                          trigger_error('Error: config is not an array or is not set', E_USER_ERROR);
                      }
                  

                • 現在,在 PHP 手冊中,所有三種方法都使用了.

                  Now, in the PHP manual all three methods are used.

                  • 我想知道我應該更喜歡哪種風格&為什么?

                  • What I want to know is which style should I prefer & why?

                  這 3 種是相互替代嗎?因此可以互換使用嗎?

                  Are these 3 drop in replacements of each other & therefore can be used interchangeably?

                  有點 OT:是我還是所有人都認為 PHP 錯誤處理選項太多以至于讓 php 開發人員感到困惑?

                  Slightly OT: Is it just me or everyone thinks PHP error handling options are just too many to the extent it confuses php developers?

                  推薦答案

                  第一個不應該在生產代碼中使用,因為它傳輸與最終用戶無關的信息(用戶無法對 做任何事情"無法連接到數據庫").

                  The first one should never be used in production code, since it's transporting information irrelevant to end-users (a user can't do anything about "Cannot connect to database").

                  如果您知道在某個關鍵代碼點,您的應用程序可能會失敗,并且您希望您的代碼在多個調用級別之間恢復,那么您就會拋出異常.

                  You throw Exceptions if you know that at a certain critical code point, your application can fail and you want your code to recover across multiple call-levels.

                  trigger_error() 可讓您細粒度的錯誤報告(通過使用不同級別的錯誤消息)并且您可以對最終用戶隱藏這些錯誤(使用 set_error_handler()) 但在測試過程中仍然顯示給你.

                  trigger_error() lets you fine-grain error reporting (by using different levels of error messages) and you can hide those errors from end-users (using set_error_handler()) but still have them be displayed to you during testing.

                  此外,trigger_error() 可以生成在開發過程中很重要的非致命消息,可以使用自定義錯誤處理程序在生產代碼中抑制這些消息.您也可以產生致命錯誤 (E_USER_ERROR),但這些錯誤是不可恢復的.如果您觸發其中之一,程序執行將在該點停止.這就是為什么,對于致命錯誤,應該使用異常.這樣,您就可以更好地控制程序的流程:

                  Also trigger_error() can produce non-fatal messages important during development that can be suppressed in production code using a custom error handler. You can produce fatal errors, too (E_USER_ERROR) but those aren't recoverable. If you trigger one of those, program execution stops at that point. This is why, for fatal errors, Exceptions should be used. This way, you'll have more control over your program's flow:

                  // Example (pseudo-code for db queries):
                  
                  $db->query('START TRANSACTION');
                  
                  try {
                      while ($row = gather_data()) {
                         $db->query('INSERT INTO `table` (`foo`,`bar`) VALUES(?,?)', ...);
                      }
                      $db->query('COMMIT');
                  } catch(Exception $e) {
                      $db->query('ROLLBACK');
                  }
                  

                  在這里,如果 gather_data() 只是簡單的嘶嘶聲(使用 E_USER_ERRORdie()),則有機會,之前的 INSERT 語句會將其添加到您的數據庫中,即使不需要,您也無法控制接下來會發生什么.

                  Here, if gather_data() just plain croaked (using E_USER_ERROR or die()) there's a chance, previous INSERT statements would have made it into your database, even if not desired and you'd have no control over what's to happen next.

                  這篇關于PHP 錯誤處理:die() Vs trigger_error() Vs throw Exception的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  MySQLi prepared statement amp; foreach loop(MySQLi準備好的語句amp;foreach 循環)
                  Is mysqli_insert_id() gets record from whole server or from same user?(mysqli_insert_id() 是從整個服務器還是從同一用戶獲取記錄?)
                  PHP MySQLi doesn#39;t recognize login info(PHP MySQLi 無法識別登錄信息)
                  mysqli_select_db() expects exactly 2 parameters(mysqli_select_db() 需要 2 個參數)
                  Php mysql pdo query: fill up variable with query result(Php mysql pdo 查詢:用查詢結果填充變量)
                  MySQLI 28000/1045 Access denied for user #39;root#39;@#39;localhost#39;(MySQLI 28000/1045 用戶“root@“localhost的訪問被拒絕)
                    <tbody id='IkIGg'></tbody>

                        <i id='IkIGg'><tr id='IkIGg'><dt id='IkIGg'><q id='IkIGg'><span id='IkIGg'><b id='IkIGg'><form id='IkIGg'><ins id='IkIGg'></ins><ul id='IkIGg'></ul><sub id='IkIGg'></sub></form><legend id='IkIGg'></legend><bdo id='IkIGg'><pre id='IkIGg'><center id='IkIGg'></center></pre></bdo></b><th id='IkIGg'></th></span></q></dt></tr></i><div class="5rbln7j" id='IkIGg'><tfoot id='IkIGg'></tfoot><dl id='IkIGg'><fieldset id='IkIGg'></fieldset></dl></div>

                          <legend id='IkIGg'><style id='IkIGg'><dir id='IkIGg'><q id='IkIGg'></q></dir></style></legend>
                        • <tfoot id='IkIGg'></tfoot>

                        • <small id='IkIGg'></small><noframes id='IkIGg'>

                            <bdo id='IkIGg'></bdo><ul id='IkIGg'></ul>

                          • 主站蜘蛛池模板: ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | 天命文免费算命堂_自助算命_自由算命系统_长文周易 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 短信群发平台_群发短信软件_短信营销-讯鸽科技 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 山东成考网-山东成人高考网 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 |