首頁 >後端開發 >php教程 >(四)PHP物件導向理論4---異常與錯誤處理

(四)PHP物件導向理論4---異常與錯誤處理

WBOY
WBOY原創
2016-08-08 09:19:21875瀏覽

一.異常處理:
1.    PHP異常舉例:

<?php
//运行无结果。
$a = null;
try{
    $a = 5 / 0 ;
    echo $a,PHP_EOL;
}catch(exception $e){
    $e->getMessage();
    $a = -1;
}
echo $a;
2.詳細的異常舉例:
<?php
header("Content-type: text/html; charset=utf-8");

class emailException extends exception{

}
class pwdException extends exception{
    function __toString(){
        return "<div class =\"error\">Exception($this->getCode()):
        {$this->getMessage()}
        in File:($this->getFile()) on Line:{$this->getLine()}</div>";
    }
}

function reg($reginfo =null){
    if (empty($reginfo) || isset($reginfo)){
        throw new Exception("参数非法");
    }
    if (empty($reginfo['email'])){
        throw new emailException("邮件为空");
    }
    if ($reginfo['pwd'] != $reginfo['repwd']){
        throw new pwdException("两次密码不一致");
    }
    echo "注册成功";
}
/*
 * 这个代码无法执行,抽空找原因
 */

try{
    reg(array('email' => 'waitfox@qq.com','pwd'=>123456,'repwd'=>12345678));
}catch (emailException $ee){
    echo $ee->getMessage();
}catch (pwdException $ep){
    echo $ep;
    echo PHP_EOL,"特殊处理";
}catch (Exception $e){
    echo $e->getTraceAsString();
    echo PHP_EOL,"其他情况统一处理";
}
3.    用到異常處理的場景:
a.    對程序的悲觀預測
b.語言層級的健壯性要求:捕捉異常並做出相應的補救
3.    面對異常:處理異常需要在合理的場景下
二. PHP的錯誤等級:
1.PHP的錯誤等級:
a.deprecated:最低等級。 ‘不推薦,不建議’
b.notice:語法不當。例如使用變數而未定義
c.warning:函數參數不符
d.fetal error:直接導致PHP流程終結,後面程式碼不再執行。
e.prase error:語法檢查階段將報此錯誤。 PHP手冊一共定義了16個等級的錯誤。
2.舉例:
<?php
//php5.6,据说可以演示错误,但我出现了正确结果……
$date = &#39;2012-12-20&#39;;
if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$date,$regs)){
    echo "$regs[3].$regs[2].$regs[1]";
}else{
    echo "Invaild date format:$date";
}

if ($i>5){
    echo "$i没有初始化啊",PHP_EOL;
}

$a = array('o'=>2,4,6,8);
echo $a[o];
$result = array_sum($a,3);
echo fun();
echo "错误了…… 能继续吗?";
4.    PHP錯誤處理機轉:
<?php
function customerError($errno,$errstr,$errfile,$errline){
    echo "<b>错误代码:</b>[${errno}],文件{$errstr}\r\n";
    echo "错误所在的代码行:{$errline}文件{$errfile}\r\n";
    echo "PHP版本",PHP_VERSION,"(",PHP_OS,")\r\n";
}

set_error_handler("customeError",E_ALL|E_STRICT);
$a = array('o'=>2,4,6,8);
echo $a['o'];

//此问题亦无答案。没有报错
三. PHP物件導向的總結:
PHP物件導向的知識點:魔術方法、介面、多型、類別的重複使用、反射、異常機制。
PHP也引入了一些函數式程式設計的概念。

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了(四)PHP物件導向理論4---異常和錯誤處理,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn