zoukankan      html  css  js  c++  java
  • PHP错误与异常

    错误报告关闭和打开

    php.ini 的 display_errors = On 或者 Off

    代码里 ini_set(‘display_errors’,1) 或者 0


    错误报告级别

    最佳实践

    开发环境下打开错误报告。并且错误报告级别 E_ALL
    正式环境一定要关闭错误报告

    //显示所有的错误类型
    error_reporting(E_ALL);
    
    //显示所有的错误类型,除了NOTICE 提示之外
    error_reporting(E_ALL ^ E_NOTICE);
    error_reporting(E_ALL &~ E_NOTICE);
    
    //关闭所有的PHP错误报告
    error_reporting(0);
    
    //报告所有的错误类型
    error_reporting(-1);

    举例

    try {
        //找不到文件
        throw new Exception('找不到文件',1);
        //没有权限访问
        throw new Exception('没有权限',2);
    } catch (Exception $e) {
        $errno =  $e -> getCode();
    
        if($errno == 1){
            echo $e -> getFile();
        }elseif($errno == 2){
            echo $e -> getLine();
        }
    }

    文件异常类

    class FileException extends Exception{
        public function fileInfo(){
            return $this->getMessage();
        }
    }
    
    try {
        print "open file";
        throw new FileException('file does not exist');
    } catch (Exception $e) {
        print $e -> fileInfo();
    }

    捕获多个异常

    class FileException extends Exception{}
    
    //文件不存在的异常
    class FileNotExistException extends FileException{}
    //文件权限异常 
    class FilePermissionException extends FileException{}
    
    function fileHandle(){
        //文件不存在
        throw new FileNotExistException('file does not exist');
    
        //文件权限异常
        throw new FilePermissionException('access denied');
    
        //其他异常
        throw new FileException('other exception');
    }
    try {
        fileHandle();
    } catch (FileNotExistException $e) {
        echo $e -> getMessage();
    }catch(FilePermissionException $e){
        echo $e -> getMessage();
    }catch(FileException $e){
        echo $e -> getMessage();
    }

    全局异常处理

    <?php 
    class FileException extends Exception{
        //文件不存在
        const FILE_NOT_EXIST = 1;
        //权限不够
        const FILE_PERMISSION = 2;
    }
    
    function fileHandle(){
        //文件不存在
        throw new FileException('FilenotExist',FileException::FILE_NOT_EXIST);
    
        //权限不够
        throw new FileException('FilePermission',FileException::FILE_PERMISSION);
    }
    try {
        fileHandle();
    } catch (Exception $e) {
        switch ($e -> getCode()) {
            case FileException::FILE_NOT_EXIST:
                echo($e->getMessage());
                break;
            case FileException::FILE_PERMISSION:
                echo ($e -> getMessage());
                break;
        }
    }catch(Exception $e){
        echo 'exception';
    }
    ?>
    ------------------------------------------
    <?php 
    function defaultExceptionHandle($e){
        printf("uncaught exception:%s in file %s on line %d",$e->getMessage(),$e->getFile(),$e->getLine());
    }
    
    set_exception_handler('defaultExceptionHandle');
    throw new Exception('tese......');
    ?>
  • 相关阅读:
    I.MX6 Surfaceflinger 机制
    理解 Android Fragment
    RPi 2B DDNS 动态域名
    RPi 2B IPC webcam server
    理解 Android MVP 开发模式
    I.MX6 system.img unpack repack
    can't set android permissions
    VMware Ubuntu 共享文件夹
    解决oracle数据库连接不上的问题
    perfect-scrollbar示例
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/12191532.html
Copyright © 2011-2022 走看看