2019.3.23 捕获异常
PHP中try{}catch{}語句概述
1.PHP5添加了類似于其它語言的異常處理模塊。在 PHP 代碼中所產生的異常可被 throw語句拋出并被 catch 語句捕獲。(注:一定要先拋才能獲取)
2.需要進行異常處理的代碼都必須放入 try 代碼塊內,以便捕獲可能存在的異常。
3.每一個 try 至少要有一個與之對應的 catch。
4.使用多個 catch可以捕獲不同的類所產生的異常。
5.當 try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最后一個 catch 的后面繼續執行。
6.當然,PHP允許在 catch 代碼塊內再次拋出(throw)異常。
7.當一個異常被拋出時,其后(譯者注:指拋出異常時所在的代碼塊)的代碼將不會繼續執行,而 PHP 就會嘗試查找第一個能與之匹配的 catch。
8.如果一個異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那么 PHP 將會產生一個嚴重的錯誤,并且輸出 Uncaught Exception ... (未捕獲異常)的提示信息。
手動拋出和捕獲異常
// 使用think自帶異常類拋出異常
throw new \think\Exception('異常消息', 10006);
助手函數簡化異常的代碼
// 使用助手函數拋出異常
exception('異常消息', 10006);
如果需要拋出自定義異常,可以使用:
// 拋出自定義異常
exception('異常消息', 10006,'\app\common\exception\NotFoundException');
手動捕獲異常方式是使用try-catch,例如:
try {// 這里是主體代碼 } catch (ValidateException $e) { // 這是進行驗證異常捕獲 return json($e->getError()); } catch (\Exception $e) { // 這是進行異常捕獲 return json($e->getMessage()); }可以使用PHP的異常捕獲進行必要的處理,但需要注意一點,
在異常捕獲中不要使用think\Controller類的error、success和redirect方法,
因為上述三個方法會拋出HttpResponseException異常,從而影響正常的異常捕獲,例如:
try{Db::name('user')->find(); $this->success('執行成功!'); }catch(\Exception $e){ $this->error('執行錯誤'); }
應該改成
try{Db::name('user')->find(); }catch(\Exception $e){ $this->error('執行錯誤'); } $this->success('執行成功!');
?
?
? ?轉載于:https://www.cnblogs.com/liuwei1/p/10585230.html
總結
以上是生活随笔為你收集整理的2019.3.23 捕获异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20190626_二次开发BarTend
- 下一篇: struts2被淘汰的原因