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();
    }
    

      

  • 相关阅读:
    du命令、df命令、磁盘分区
    du命令、df命令、磁盘分区
    C#中类和结构体的区别
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    JAVA并查集
    JAVAPrim最小生成树
    自媒体创业怎么起步?如何选择自媒体平台?
    如何在互联网创业?有什么好的技巧?
  • 原文地址:https://www.cnblogs.com/phonecom/p/8616391.html
Copyright © 2011-2022 走看看