php异常
php异常通过try,catch和throw三个关键字和内置的Exception基类来实现,语序运行可能发生的错误代码并且能从失败中回复
1.try是用来检测异常的代码块。举例
<?try{代码}?>
2.catch是用来定义出来异常方法的。
<? catch(Exception $e){处理代码}?>
3.throw是用来触发异常还并在这一点上中断处理过程
<? throw new Exception("错误信息");?>
看异常的实例,我拿数据库连接作为异常的实例
<?
try{//尝试连接
@$conn = mysql_connect("localhost","root","");
$flag = mysql_select_db("test",$conn);
if($flag){//连接错误抛出异常
throw new Exception("不能连接数据库");
}
}
catch(Exception $e){//用catch捕获异常并输出异常信息
echo $e->getMessage();
}
?>
Excption类是所有异常类的基类,可以通过基类来扩展异常类。
异常方法:
getMessage() 返回异常信息,此信息是描述错误状态的字符串
getCode() 返回错误代码
getFile() 返回错误文件
getLine() 返回错误行数要与getFile()一起用
getTrace() 返回场景回溯的一个数组
getTranceAsString() 返回场景回溯的字符串
__toString() 返回字符串表达整个异常的信息
php异常的扩展,通过对基类Exception的扩展来自定义异常类
<?
class dbexception extends Exception{//自定义dbexception类
private $errmessage;//定义一个属性
function __contruct($message=null,$code=0){//实例化时,给默认值
$this->errmessage=$message;
parent::__contruct($message,$code);//实例化扩展类时,调用父类的构造函数
}
}
try{
@$conn = mysql_connect("localhost","root","");
$flag = mysql_select_db("test",$conn);
if($flag){
throw new dbexception("不能连接数据库");
}
}
catch(dbexception $e){
echo $e->getMessage();//同样不能连接数据库
}
?>
说了这么多,不知道异常懂了没?