zoukankan      html  css  js  c++  java
  • PHP异常处理、错误捕获和自动加载的一些总结

    <?php
    // 设置顶层异常处理器
    set_exception_handler('exceptionHandler');
    function exceptionHandler($e) {
        echo $e -> getMessage();
    }
    
    // register_shutdown_function可捕获 FATAL ERROR 级别的错误
    register_shutdown_function('fatalHandler');
    function fatalHandler() {
    	$error = error_get_last();
        $errno   = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr  = $error["message"];
        $str= "errno:" . $errno . "-errstr:" . $errstr . "-errfile:" . $errfile . "-errline:" . $errline;
        echo $str;
    }
    
    // set_error_handler只能捕获 NOTICE/WARNING级别的错误
    set_error_handler('errorHandler');
    function errorHandler($errno,$errstr,$errfile,$errline) {
        $str= "errno:" . $errno . "-errstr:" . $errstr . "-errfile:" . $errfile . "-errline:" . $errline;
        echo $str;
    }
    
    // 设置自动装载函数
    spl_autoload_register('splAutoloadRegister');
    function splAutoloadRegister($name) {
        print '[['. $name .']] can not autoload';
        echo "
    ";
    }
    
    
    function checkNum($number) {
        if($number>1) {
            // 异常构造函数
            // Value must be 1 or below:异常描述
            // 400:异常错误码
            // new Exception('parentOne', 401):该异常的上一个异常
            throw new Exception("Value must be 1 or below", 400, new Exception('parentOne', 401));
        }
        return true;
    }
    
    try {
        checkNum(2);
    } catch (Exception $e) {
        // 获取异常消息内容
        echo $e -> getMessage();
        // 返回异常链中的前一个异常(返回的是一个Throwable接口类, Exception是Throwable的一个子类)
        // 可以使用$e -> getPrevious() -> getCode()获取上一个异常的信息
        echo $e -> getPrevious();
        // 获取异常错误码
        echo $e -> getCode();
        // 创建异常时的程序文件名称
        echo $e -> getFile();
        // 获取创建的异常所在文件中的行号
        echo $e -> getLine();
        // 获取异常追踪信息
        print_r($e -> getTrace());
        // 获取字符串类型的异常追踪信息
        echo $e -> getTraceAsString();
        // 将异常对象转换为字符串
        echo $e -> __toString();
    }
    

      

  • 相关阅读:
    【Head First Servlets and JSP】笔记3:Servlet的生命周期
    正则表达
    【Java Web】把逻辑名映射到servlet文件
    【Head First Servlets and JSP】笔记2:MVC迷你教程
    【算法(第4版)】笔记
    【Head First Servlets and JSP】笔记1
    【python】对象和面向对象
    【深度探索c++对象模型】Function语义学之成员函数调用方式
    【c++】多重继承与虚继承
    【Scrapy】Selectors
  • 原文地址:https://www.cnblogs.com/phonecom/p/8616391.html
Copyright © 2011-2022 走看看