一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP異常處理定義與使用方法分析

PHP異常處理定義與使用方法分析

2021-06-08 16:283wlog PHP教程

這篇文章主要介紹了PHP異常處理定義與使用方法,較為詳細的分析了php異常處理的定義、使用方法及相關注意事項,需要的朋友可以參考下

本文實例講述了PHP異常處理定義與使用方法。分享給大家供大家參考,具體如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//php5提供了基本的異常處理類,可直接使用 ,不需要自己再定義
// class Exception
// {
// protected $message = 'Unknown exception'; // 異常信息
// protected $code = 0; // 用戶自定義異常代碼
// protected $file; // 發生異常的文件名
// protected $line; // 發生異常的代碼行號
// function __construct($message = null, $code = 0);
// final function getMessage(); // 返回異常信息
// final function getCode(); // 返回異常代碼
// final function getFile(); // 返回發生異常的文件名
// final function getLine(); // 返回發生異常的代碼行號
// final function getTrace(); // backtrace() 數組
// final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
// /* 可重載的方法 */
// function __toString(); // 可輸出的字符串
// }
?>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
//定義一個頂級異常處理
function my_exception($e){
  echo "我是頂級異常處理".$e->getMessage();
}
//修改默認的頂級異常處理函數(器)
set_exception_handler("my_exception");
//我們使用異常機制
try{
  addUser("shunping");
  updateUser("xiaoming1");
}
//catch用來 捕獲異常, Exception 是異常類(是php定義好一個類)
catch(Exception $e){
  //返回異常信息
  echo "返回異常信息(失敗信息) =".$e->getMessage()."<br/>";
  echo "返回異常代碼 =".$e->getCode()."<br/>";
  echo "返回發生異常的文件名 =".$e->getFile()."<br/>";
  echo "返回發生異常的代碼行號 =".$e->getLine()."<br/>";
  //echo " =".$e->getTrace()."<br/>"; // backtrace() 數組
  //可以繼續拋出,這時將會啟動php默認的異常處理器來處理
  //你也可以自己定義一個頂級異常處理器,對其進行處理
  throw $e;
}
function addUser($username){
  if($username=="shunping"){
    //添加ok
    echo "ok1";
  }else{
    //添加error
    //拋出異常.
    throw new Exception("添加失敗");
  }
}
function updateUser($username){
  if($username=="xiaoming"){
    //正常修改
    echo "ok2";
  }else{
    //平拋出異常
    throw new Exception("修改失敗");
  }
}
?>

異常使用的注意事項 :

通過上面的案例,我們可以看出,使用

?
1
2
3
4
5
try{
    //代碼
}catch(Exception $e){
    //對異常處理
}

這種方式,可以更有效的控制錯誤.所以在開發中大量的使用.

1. 當捕獲到一個異常后,try{} 塊里的后續代碼不繼續執行.
2. 如果有一個異常發生,但是你沒有catch 捕獲,則提示一個Uncaught Exception.(系統.)
3. 當catch一個異常,你可以處理,也可以不處理,不處理就可以
throw new Exception("信息");

4. 你可以自定義異常類

?
1
2
class MyException extends Exception {
}

5. 使用多個 catch 代碼塊可以捕獲不同種類的異常

?
1
2
3
4
5
6
7
8
9
try{
    //代碼....
  //第一句話
  //第二句話
}catch(PDOException $e){
    //
}catch(Exception $e){
|
}

6. 也可簡單使用 Exception 捕獲

代碼說明:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    //定義了一個異常
    class MyException1 extends Exception{
    }
    class MyException2 extends Exception{
    }
    function A(){
       throw new MyException1("a");
    }
    function B(){
       throw new MyException2("b")
    }
    function C(){
       try{
           A();//拋出MyException1
           B();//拋出MyException2
       }catch(Exception1 $e1){
           $e1->getMessage();
       }catch(Exception2 $e2){
           $e2->getMesage();
       }
    }
?>

異常的規則

需要進行異常處理的代碼應該放入 try 代碼塊內,以便捕獲潛在的異常。
每個 try 或 throw 代碼塊必須至少擁有一個對應的 catch 代碼塊。
使用多個 catch 代碼塊可以捕獲不同種類的異常。
可以在 try 代碼塊內的 catch 代碼塊中拋出(再次拋出)異常。
簡而言之:如果拋出了異常,就必須捕獲它。或者使用頂級異常處理器處理。
如果不拋,即使有異常也不會捕獲,不會處理

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩欧美天堂 | 国产区1 | 国产福利在线观看永久视频 | porono日本人xxx | 脱jk裙的美女露小内内无遮挡 | 99在线精品免费视频 | 韩国男女做性全过程视频 | 9191精品国产观看 | 网站国产| 国产美女久久久久 | 日本艳鉧动漫1~6在线观看 | 夫承子液by免费阅读 | 亚洲区视频在线观看 | 欧美日韩国产一区二区三区不卡 | 欧美日韩亚洲一区二区三区在线观看 | 激情视频激情小说 | 午夜神器18以下不能进免费 | 美女扒开腿让男生捅 | 日本热妇 | 天天色综合三 | 国模娜娜a4u1546全套 | 久久青草免费91线频观看站街 | 亚洲精品乱码蜜桃久久久 | 午夜片无码区在线观看 | 国产久热香蕉在线观看 | 女同志 videos | 99久久国产综合精品女不卡 | 狠狠色婷婷 | 91精品久久国产青草 | 免费免费啪视频在线观播放 | 毛片影院 | 操丝袜秘书| 人人干国产 | 免费视频 | 美女被躁爽死 | 亚洲四虎影院 | 成人免费福利网站在线看 | 亚洲天堂免费观看 | 男人操女生| 丁香五香天堂网 | 极品丝袜乱系列在线阅读 |