PHP异常处理

  • 1,420

异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。

异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。当异常被触发时,通常会发生:

当前代码状态被保存

代码执行被切换到预定义的异常处理器函数

根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本

PHP 5 提供了一种新的面向对象的错误处理方法。可以使用检测(try)、抛出(throw)和捕获(catch)异常。即使用try检测有没有抛出(throw)异常,若有异常抛出(throw),使用catch捕获异常。

一个 try 至少要有一个与之对应的 catch。定义多个 catch 可以捕获不同的对象。PHP 会按这些 catch 被定义的顺序执行,直到完成最后一个为止。而在这些 catch 内,又可以抛出新的异常。

 <?php

/***
异常
***/


Error_reporting(0);

class mysql {
    protected $conn = NULL;

    public function __construct() {
        $this->conn = mysql_connect('localhost','root','1111111');

        if(!$this->conn) {
            // 发卫星报告

            // 在PHP中,卫星是规定的一种对象.
            // 哪个类的对象: Exception类的对象
            // new Exception('错误原因',错误代码);
            $e = new Exception('漏油了',9);

            throw $e;  // throw 抛出/扔出
        }
    }
}


try { // 测试,并试图捕捉错误信息
    $mysql = new mysql(); // 返回mysql对象,并且自动连上了数据库
} catch(Exception $e) {
    echo '捕捉到错误信息:<br />';
    echo $e->getMessage(),'<br />';
    echo '错误代码',$e->getCode(),'<br />';
    echo '错误文件',$e->getFile(),'<br />';
    echo '错误行',$e->getLine(),'<br />';
}

/*
疑问:我怎么判断连接成功了没有?
答:返回对象后, 打印对象的 $conn属性,来判断

需要2个步骤
1: new mysql
2: if($mysql->conn) {
}

思考:我们以前用函数时,都是返回一个值,用值来判断各种情况
比如 返回true/false 代码成功/失败

现在我们用返回值 还行不行?
*/


var_dump($mysql);

if($mysql instanceof mysql) {
    echo '对象创建成功,大概连接成功';
} else {
    echo '对象创建失败,大概连接失败';
}


<?php


class mysql {
    protected $conn = NULL;

    public function __construct() {
        $this->conn = @mysql_connect('localhost','root','1111111');

        if(!$this->conn) {
            // 发卫星报告

            // 在PHP中,卫星是规定的一种对象.
            // 哪个类的对象: Exception类的对象
            // new Exception('错误原因',错误代码);
            $e = new Exception('漏油了',9);

            throw $e;  // throw 抛出/扔出
        }
    }
}


// 内部扔了异常,结果外部没有人来catch,并处理
// 这时,要报fatal error的
$mysql = new mysql();



PHP异常处理

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2016年8月16日09:29:35
  • 转载请务必保留本文链接:https://www.150643.com/323.html
匿名

发表评论

匿名网友 填写信息