异常处理类
<?php
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(); // 可输出的字符串
}
?>
使用方法
<?php
try
{
$error = '抛出异常信息,并且跳出try块<br/>';
if(is_dir('./test'))
{
echo '检测到../ch16是一个目录';
echo '<br/>';
echo '可能继续做其他一些操作';
echo '<br/>';
echo '....';
echo '<br/>';
}
else
{
throw new Exception($error,12345);
}
echo '上面throw异常的话,这行代码不会执行,转而执行catch块<br/>';
}
catch(Exception $e)
{
echo '捕获异常: ' . $e->getMessage() . "<br/>错误代码:" . $e->getCode().'<br/>'; //显示$error和123456
echo '<br/>';
}
echo '继续执行';
?>
捕获异常信息
<?php
$file = './test/readme.txt';
try
{
if(is_dir($file))
{
echo '检测到目录';
}
else
{
//创建异常对象,错误信息将有Exception类的成员函数getMessage()返回
throw new Exception('未找到该目录或文件');
}
}
catch(Exception $e)
{
echo '捕获异常: ' . $e->getMessage();
echo '<br/>===============================';
echo '<br/>';
}
echo '程序执行完毕';
?>
捕获发生错误的文件
<?php
$file = './test/readme.txt';
try
{
if(is_dir($file))
{
echo '检测到目录';
}
else
{
//创建异常对象,错误信息将有Exception类的成员函数getMessage()返回
throw new Exception('未找到该目录或文件');
}
}
catch(Exception $e)
{
echo '捕获异常: ' . $e->getMessage();
echo '<br/><br/>';
echo '错误所在文件:'. $e->getFile();
echo '<br/>===============================';
echo '<br/>';
}
echo '程序执行完毕';
?>
捕获错误的行号
<?php
$file = './test/readme.txt';
try
{
if(is_dir($file))
{
echo '检测到目录';
}
else
{
//创建异常对象,错误信息将有Exception类的成员函数getMessage()返回
throw new Exception('未找到该目录或文件');
}
}
catch(Exception $e)
{
echo '捕获异常: ' . $e->getMessage();
echo '<br/><br/>';
echo '错误所在文件:'. $e->getFile();
echo '<br/><br/>';
echo '错误所在行号:'. $e->getLine();
echo '<br/>===============================';
echo '<br/>';
}
echo '程序执行完毕';
?>