您好,登錄后才能下訂單哦!
php中怎么處理錯(cuò)誤異常,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
php中的錯(cuò)誤異常怎么處理
每一個(gè)try至少要有一個(gè)與之對應(yīng)的catch.使用多個(gè)catch可以捕獲不同的類所產(chǎn)生的異常.當(dāng)try代碼塊不再拋出異?;蛘哒也坏絚atch能匹配所拋出的異常時(shí),PHP代碼就會在跳轉(zhuǎn)到最后一個(gè)catch的后面繼續(xù)執(zhí)行.當(dāng)然,PHP允許在catch代碼塊內(nèi)再次拋出(throw)異常.當(dāng)一個(gè)異常被拋出時(shí),其后(譯者注:指拋出異常時(shí)所在的代碼塊)的代碼將不會繼續(xù)執(zhí)行,而PHP就會嘗試查找第一個(gè)能與之匹配的catch.如果一個(gè)異常沒有被捕獲,而且又沒用使用set_exception_handler()作相應(yīng)的處理的話,那么PHP將會產(chǎn)生一個(gè)嚴(yán)重的錯(cuò)誤,并且輸出UncaughtException...(未捕獲異常)的提示信息.
/**
*Exception.php
*PHP5內(nèi)置的異常類的屬性與方法
*以下這段代碼只為說明內(nèi)置異常處理類的結(jié)構(gòu),它并不是一段有實(shí)際意義的可用代碼.
*/
classException{
protected$message='Unknownexception';//異常信息
protected$code=0;//用戶自定義異常代碼
protected$file;//發(fā)生異常的文件名
protected$line;//發(fā)生異常的代碼行號
function__construct($message=null,$code=0);
finalfunctiongetMessage();//返回異常信息
finalfunctiongetCode();//返回異常代碼(代號)
finalfunctiongetFile();//返回發(fā)生異常的文件名
finalfunctiongetLine();//返回發(fā)生異常的代碼行號
finalfunctiongetTrace();//backtrace()數(shù)組
finalfunctiongetTraceAsString();//已格成化成字符串的getTrace()信息
//可重載的方法
function__toString();//可輸出的字符串
}
?>
/**
*syntax.php
*/
//語法結(jié)構(gòu)以及分析
//PHP有兩種拋出異常的格式,如下
//【1】try...catch...
try{
//實(shí)行可能有異常的操作,比如數(shù)據(jù)庫錯(cuò)作,文件錯(cuò)作
}catch(Exception$e){
//打印錯(cuò)誤信息
}
//【2】throw
php中的錯(cuò)誤異常怎么處理
$message=‘我必須被運(yùn)行在try{}塊中****現(xiàn)異常的話我($message)將被返回(傳遞)給catch()里的異常對象的實(shí)例比如上面的$e';
$code=123;//錯(cuò)誤代碼號,可在catch塊中用$e->getCode();返回我的值123,這樣我就可以自定義錯(cuò)誤代碼號
thrownewException($message,$code);
//學(xué)JAVA的注意,PHP異常處理沒有throws
?>
/**
*Example.php
*/
//兩個(gè)實(shí)例掌握PHP異常處理
//例【1】用try...catch
/*PDO連接mysql數(shù)據(jù)庫,如果沒看過PDO,先看下PDO的構(gòu)造函數(shù),要不跳過例1看例2*/
$dsn='mysql:host=localhost;dbname=testdb';
$user='dbuser';
$password='dbpass';
try{
$dbh=newPDO($dsn,$user,$password);//創(chuàng)建數(shù)據(jù)庫連接對象容易出現(xiàn)異常
echo’如果上面出現(xiàn)異常就不能顯示我了‘;
}catch(PDOException$e){
echo'Connectionfailed:'.$e->__toString();
}
?>
//例[2]try..cathc和throw一起用
try{
$error=’我拋出異常信息,并且跳出try塊‘;
if(is_dir('./tests')){
echo'dosth.';
}else{
thrownewException($error,12345);
}
echo’上面有異常的話就輪不到我了!~
',“\n”;
}catch(Exception$e){
echo‘捕獲異常:',$e->getMessage(),$e->getCode(),“\n
”;//顯示$error和123456
}
echo’繼續(xù)執(zhí)行‘;
?>
看完上述內(nèi)容,你們掌握php中怎么處理錯(cuò)誤異常的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。