<?php 
header('Content-type:text/html;charset=utf-8');
//异常
error_reporting(0);//不报告错误信息

class MySql {
    protected $conn = NULL;

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

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

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

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

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

需要两个步骤:
1.new MySql
2. if($mysql->conn)

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

现在我们用返回值,还行不行?
*/
echo "<pre>";
var_dump($mysql);
echo "</pre>";
if ($mysql instanceof MySql) {
	echo "对象创建成功,大概连接成功";
}else{
	echo "对象创建失败,大概连接失败";
}
<?php 
header('Content-type:text/html;charset=utf-8');
class mysql {
	protected $conn = NULL;

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

		if (!$this->conn) {
			$e = new Exception('漏油了',9);
			throw $e; // 抛出异常
		}
	}
}

//内部扔了异常,但是外部没有try,catch
$mysql = new mysql();

?>