Rumah >php教程 >php手册 >php 错误处理与异常处理方法与实例教程

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

WBOY
WBOYasal
2016-05-25 16:51:311596semak imbas

在程序开发中,错误处理这一块是非常重要的,今天本文章就来告诉他关于在php开发中,错误处理函数并且举例说明错误处理的重要性。

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

1,内置异常处理类

<?php
class exception {
    protected $message = &#39;unknown exception&#39;; // 异常信息
    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、捕获并处理异常的示例

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

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

<?php
$file = &#39;./test/readme.txt&#39;;
try {
    if (is_dir($file)) {
        echo &#39;检测到目录&#39;;
    } else {
        //创建异常对象,错误信息将有exception类的成员函数getmessage()返回
        throw new exception(&#39;未找到该目录或文件&#39;);
    }
}
catch(exception $e) {
    echo &#39;捕获异常: &#39; . $e->getmessage();
    echo &#39;<br/>===============================&#39;;
    echo &#39;<br/>&#39;;
}
echo &#39;程序执行完毕&#39;;
?>

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

<?php
$file = &#39;./test/readme.txt&#39;;
try {
    if (is_dir($file)) {
        echo &#39;检测到目录&#39;;
    } else {
        //创建异常对象,错误信息将有exception类的成员函数getmessage()返回
        throw new exception(&#39;未找到该目录或文件&#39;);
    }
}
catch(exception $e) {
    echo &#39;捕获异常: &#39; . $e->getmessage();
    echo &#39;<br/><br/>&#39;;
    echo &#39;错误所在文件:&#39; . $e->getfile();
    echo &#39;<br/>===============================&#39;;
    echo &#39;<br/>&#39;;
}
echo &#39;程序执行完毕&#39;;
?>

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

<?php
$file = &#39;./test/readme.txt&#39;;
try {
    if (is_dir($file)) {
        echo &#39;检测到目录&#39;;
    } else {
        //创建异常对象,错误信息将有exception类的成员函数getmessage()返回
        throw new exception(&#39;未找到该目录或文件&#39;);
    }
}
catch(exception $e) {
    echo &#39;捕获异常: &#39; . $e->getmessage();
    echo &#39;<br/><br/>&#39;;
    echo &#39;错误所在文件:&#39; . $e->getfile();
    echo &#39;<br/><br/>&#39;;
    echo &#39;错误所在行号:&#39; . $e->getline();
    echo &#39;<br/>===============================&#39;;
    echo &#39;<br/>&#39;;
}
echo &#39;程序执行完毕&#39;;
?>

6、显示警告或错误信息

<?php
error_reporting(e_warning | e_error); //显示警告和错误信息
echo $uvar; //这里产生注意信息,但不会显示出来
callfunc(); //这里产生一个致命错误,并且会显示出来

?>

7、自定义错误处理函数。 

<?php
set_error_handler(&#39;myhandler&#39;); //自定义错误处理函数
function myhandler($code, $msg, $file, $line) {
    echo "<br/>";
    echo "程序 <b>$file</b> 执行过程中,在第 <b>$line</b> 行,产生一个错误。";
    echo "<br/>";
    echo "错误代码为:<b>$code</b>, 错误的原因是: <b>$msg</b>";
}
echo $uvar;
?>


本文链接:

收藏随意^^请保留教程地址.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn