异常经常被用来处理一些在程序正常执行中遇到的各种类型的错误。比如做数据库链接时,你就要处理数据库连接失败的情况。使用异常可以提高我们程序的容错特性,从而使我们的应用程序更加的稳定和健壮。
PHP5 增加了类似其他语言的异常处理模块。在PHP代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入到 try 代码块内,以便捕获可能存在的异常。每个try至少对应一个 catch 块。使用多个 catch 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。
预定义异常 Exception
class Exception{
protected $message = 'Unknown exception'; // 异常信息
protected $code = 0; // 用户自定义异常代码
protected $file; // 发生异常的文件名
protected $line;
function __construct($message = null, $code = 0);
final function getMessage(); // 返回异常信息
final function getCode(); // 返回异常代码
final function getFile(); // 返回发生异常的文件名
final function getLine(); // 返回发生异常的代码行号
final function getTrace(); // backtrace() 数组
final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
function __toString(); // 可输出的字符串
}
下面是连接数据库的栗子:
class connectmysql{
private $host = 'localhost';
private $username = 'root';
private $password = '1111';
protected $conn = NULL;
public function __CONSTRUCT(){
$this->conn = mysql_connect($this->host,$this->username,$this->password);
if(!$this->conn){
throw new Exception("error: can't connect mysql!",1); //抛出异常
}
}
}
try{
$mysql = new connectmysql();
}catch(Exception $e){
echo $e->getMessage().'<br>';
echo $e->getCode().'<br>';
echo $e->getFile().'<br>';
echo $e->getLine().'<br>';
echo $e.'<br>';
}
