PHP異常處理定義與使用方法分析
本文實(shí)例講述了PHP異常處理定義與使用方法。分享給大家供大家參考,具體如下:
<?php
//php5提供了基本的異常處理類,可直接使用 ,不需要自己再定義
// class Exception
// {
// protected $message = 'Unknown exception'; // 異常信息
// protected $code = 0; // 用戶自定義異常代碼
// protected $file; // 發(fā)生異常的文件名
// protected $line; // 發(fā)生異常的代碼行號(hào)
// function __construct($message = null, $code = 0);
// final function getMessage(); // 返回異常信息
// final function getCode(); // 返回異常代碼
// final function getFile(); // 返回發(fā)生異常的文件名
// final function getLine(); // 返回發(fā)生異常的代碼行號(hào)
// final function getTrace(); // backtrace() 數(shù)組
// final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
// /* 可重載的方法 */
// function __toString(); // 可輸出的字符串
// }
?>
<?php
//定義一個(gè)頂級(jí)異常處理
function my_exception($e){
echo "我是頂級(jí)異常處理".$e->getMessage();
}
//修改默認(rèn)的頂級(jí)異常處理函數(shù)(器)
set_exception_handler("my_exception");
//我們使用異常機(jī)制
try{
addUser("shunping");
updateUser("xiaoming1");
}
//catch用來(lái) 捕獲異常, Exception 是異常類(是php定義好一個(gè)類)
catch(Exception $e){
//返回異常信息
echo "返回異常信息(失敗信息) =".$e->getMessage()."<br/>";
echo "返回異常代碼 =".$e->getCode()."<br/>";
echo "返回發(fā)生異常的文件名 =".$e->getFile()."<br/>";
echo "返回發(fā)生異常的代碼行號(hào) =".$e->getLine()."<br/>";
//echo " =".$e->getTrace()."<br/>"; // backtrace() 數(shù)組
//可以繼續(xù)拋出,這時(shí)將會(huì)啟動(dòng)php默認(rèn)的異常處理器來(lái)處理
//你也可以自己定義一個(gè)頂級(jí)異常處理器,對(duì)其進(jìn)行處理
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("修改失敗");
}
}
?>
異常使用的注意事項(xiàng) :
通過(guò)上面的案例,我們可以看出,使用
try{
//代碼
}catch(Exception $e){
//對(duì)異常處理
}
這種方式,可以更有效的控制錯(cuò)誤.所以在開(kāi)發(fā)中大量的使用.
1. 當(dāng)捕獲到一個(gè)異常后,try{} 塊里的后續(xù)代碼不繼續(xù)執(zhí)行.
2. 如果有一個(gè)異常發(fā)生,但是你沒(méi)有catch 捕獲,則提示一個(gè)Uncaught Exception.(系統(tǒng).)3. 當(dāng)catch一個(gè)異常,你可以處理,也可以不處理,不處理就可以
throw new Exception("信息");
4. 你可以自定義異常類
class MyException extends Exception {
}
5. 使用多個(gè) catch 代碼塊可以捕獲不同種類的異常
try{
//代碼....
//第一句話
//第二句話
}catch(PDOException $e){
//
}catch(Exception $e){
|
}
6. 也可簡(jiǎn)單使用 Exception 捕獲
代碼說(shuō)明:
<?php
//定義了一個(gè)異常
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();
}
}
?>
異常的規(guī)則
需要進(jìn)行異常處理的代碼應(yīng)該放入 try 代碼塊內(nèi),以便捕獲潛在的異常。
每個(gè) try 或 throw 代碼塊必須至少擁有一個(gè)對(duì)應(yīng)的 catch 代碼塊。
使用多個(gè) catch 代碼塊可以捕獲不同種類的異常。
可以在 try 代碼塊內(nèi)的 catch 代碼塊中拋出(再次拋出)異常。
簡(jiǎn)而言之:如果拋出了異常,就必須捕獲它?;蛘呤褂庙敿?jí)異常處理器處理。
如果不拋,即使有異常也不會(huì)捕獲,不會(huì)處理
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP錯(cuò)誤與異常處理方法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP頁(yè)面實(shí)現(xiàn)定時(shí)跳轉(zhuǎn)的方法
解決PHP在DOS命令行下卻無(wú)法鏈接MySQL的技術(shù)筆記
Laravel 5.3 學(xué)習(xí)筆記之 錯(cuò)誤&日志
WordPress中獲取頁(yè)面鏈接和標(biāo)題的相關(guān)PHP函數(shù)用法解析
php實(shí)現(xiàn)按照權(quán)重隨機(jī)排序數(shù)據(jù)的方法
PHP利用APC模塊實(shí)現(xiàn)大文件上傳進(jìn)度條的方法

