一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

php 错误处理与异常处理方法与实例教程

时间:2010-08-02 编辑:简简单单 来源:一聚教程网

  1、内置异常处理类。
  2、捕获并处理异常的示例。
  3、exception类的成员函数getmessage()。
  4、exception类的成员函数getfile()。
  5、exception类的成员函数getline()。
  6、显示警告或错误信息。
  7、自定义错误处理函数。

*/

 // 1、内置异常处理类。

 代码如下 复制代码

 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();                      // 可输出的字符串
}
 

// 2、捕获并处理异常的示例。

 代码如下 复制代码

 try
{
    $error = '抛出异常信息,并且跳出try块
';
    if(is_dir('./test'))
    {
        echo '检测到../ch16是一个目录';
        echo '
';
        echo '可能继续做其他一些操作';
        echo '
';
        echo '....';
        echo '
';
    }
    else
    {
        throw new exception($error,12345);
    }
    echo '上面throw异常的话,这行代码不会执行,转而执行catch块
';
}
catch(exception $e)
{
    echo '捕获异常: ' . $e->getmessage() . "
错误代码:" . $e->getcode().'
';    //显示$error和123456
    echo '
';
}

echo '继续执行';

 

 
 // 3、exception类的成员函数getmessage()。
 

 

 代码如下 复制代码

$file = './test/readme.txt';

try
{
    if(is_dir($file))
    {
        echo '检测到目录';
    }
    else
    {
        //创建异常对象,错误信息将有exception类的成员函数getmessage()返回
        throw new exception('未找到该目录或文件');
    }
}
catch(exception $e)
{
    echo '捕获异常: ' . $e->getmessage();
    echo '
===============================';
    echo '
';
}

echo '程序执行完毕';
 

// 4、exception类的成员函数getfile()。
 

 代码如下 复制代码

$file = './test/readme.txt';

try
{
    if(is_dir($file))
    {
        echo '检测到目录';
    }
    else
    {
        //创建异常对象,错误信息将有exception类的成员函数getmessage()返回
        throw new exception('未找到该目录或文件');
    }
}
catch(exception $e)
{
    echo '捕获异常: ' . $e->getmessage();
    echo '

';
    echo '错误所在文件:'. $e->getfile();
    echo '
===============================';
    echo '
';
}

echo '程序执行完毕';
 

// 5、exception类的成员函数getline()。

 代码如下 复制代码

 $file = './test/readme.txt';

try
{
    if(is_dir($file))
    {
        echo '检测到目录';
    }
    else
    {
        //创建异常对象,错误信息将有exception类的成员函数getmessage()返回
        throw new exception('未找到该目录或文件');
    }
}
catch(exception $e)
{
    echo '捕获异常: ' . $e->getmessage();
    echo '

';
    echo '错误所在文件:'. $e->getfile();
    echo '

';
    echo '错误所在行号:'. $e->getline();
    echo '
===============================';
    echo '
';
}

echo '程序执行完毕';

 // 6、显示警告或错误信息。

 代码如下 复制代码

 error_reporting(e_warning | e_error);    //显示警告和错误信息
echo $uvar;                        //这里产生注意信息,但不会显示出来
callfunc();                            //这里产生一个致命错误,并且会显示出来
 // 7、自定义错误处理函数。
 set_error_handler('myhandler');     //自定义错误处理函数

function myhandler($code, $msg, $file, $line)
{
    echo "
";
    echo "程序 $file 执行过程中,在第 $line 行,产生一个错误。";
    echo "
";
    echo "错误代码为:$code, 错误的原因是: $msg";
}

echo $uvar;

?>

热门栏目