您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
燕十八面向对象-异常处理
发布时间:2015-09-11 08:26:29编辑:雪饮阅读()
异常处理在php中主要用于对象内部异常抛出以及外部捕获内部所抛出的异常信息并处理。目前仅支持try catch,据说日后会新增finally的支持。
无论对象内部发生什么异常,对象都是会new出来的,没有人能够知道其内部有没有错误:
<?php
header("Content-type:text/html;charset=utf-8;");
class mysql{
public $conn=null;
public function __construct(){
$this->conn=mysql_connect("localhost","root","root1");
if(!$this->conn){
return false;
}
else{
return $this;
}
}
}
$mysql=new mysql();
if($mysql instanceof mysql){
echo "对象大概创建成功";
}
else{
echo "对象大概创建失败";
}
/*
方法成功与否都可以返回一个具体的值(true或false或其他基本数据类型),而实例化对象,只要new就会是一个对象,无论对象内部是否发生错误,那么如何捕获对象内部错误?
*/
?>
使用try catch在对象内部抛出异常,而外部的伙伴们则来接收异常,这样就知道了对象内部情况:
<?php
header("Content-type:text/html;charset=utf-8;");
Error_reporting(0);//关闭所有报错信息
class mysql{
public $conn=null;
public function __construct(){
$this->conn=mysql_connect("localhost","root","root1");
if(!$this->conn){
/*
发卫星报告,在php中,卫星报告是规定的一种对象
那个类的对象:exception类的对象
new Exception('错误原因',错误代码);
*/
$e=new Exception("漏油了",9);
throw $e;//抛出
}
else{
return $this;
}
}
}
try{$mysql=new mysql();}//捕捉卫星信息
//处理捕捉的信息,准备营救
catch(Exception $e){
echo "捕捉到错误信息:<br/>";
echo $e->getMessage()."<br/>";
echo "错误代码".$e->getCode()."<br/>";
echo "错误文件".$e->getFile()."<br/>";
echo "错误行".$e->getLine()."<br/>";
}
?>
若是外部没有一个值得信任的伙伴可就糟了(就会报错fatal error):
<?php
header("Content-type:text/html;charset=utf-8;");
class mysql{
public $conn=null;
public function __construct(){
$this->conn=@mysql_connect("localhost","root","root1");
/*
虽然@符号屏蔽了mysql_connect的错误报告,但mysql_connect的值赋给了$this-conn所以$this-conn里面存在了错误
*/
if(!$this->conn){
/*
发卫星报告,在php中,卫星报告是规定的一种对象
那个类的对象:exception类的对象
new Exception('错误原因',错误代码);
*/
$e=new Exception("漏油了",9);
throw $e;//抛出
}
else{
return $this;
}
}
}
$mysql=new mysql();
//内部有发出异常信息,但外部没有接收信息。。。没有catch并处理。。。
/*
骗人家开车去一个山洞,说你进去后有什么异常就发信号给我,结果他自己却去睡觉去了,跑不见了。。。
*/
?>
关键字词:燕十八,异常处理,个人博客
上一篇:燕十八面向对象-类的自动加载
下一篇:dede后台验证不显示解决方法3