<?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 "\n";
} 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();
}

  

PHP异常处理、错误捕获和自动加载的一些总结的更多相关文章

  1. php错误处理,自动加载,以及栈堆内存和运行模式堆浅解 (转)

    Php错误处理 Php错误级别: E_ERROR 致命错误,会终止脚本运行.值为1 E_WARNING 警告错误,给出提示,不会终止运行值为2 E_PARSE 编译时的语法解析错误,解析错误仅仅由分析 ...

  2. ThinkPHP5.0源码学习之注册自动加载

    ThinkPHP5框架的自动注册加载流程如下:

  3. cad.net之ACAD移植到GCAD的自动加载问题

    将acad.pgp,lsp,fas,vlx,名称增加一份gcad.pgp,lsp,fas,vlx.涉及系统加载用. Lisp的拖拉加载在gcad无法通过lastprompt获取命令历史栏最后一行(含路 ...

  4. final关键字,类的自动加载,命名空间

    final关键字 1.final可以修饰方法和类,但是不能修饰属性: 2.Final修饰的类不能被继承: 3.Fina修饰的方法不能被重写,子类可以对已被final修饰的父类进行访问,但是不能对父类的 ...

  5. thinkphp5源码剖析系列1-类的自动加载机制

    前言 tp5想必大家都不陌生,但是大部分人都停留在应用的层面,我将开启系列随笔,深入剖析tp5源码,以供大家顺利进阶.本章将从类的自动加载讲起,自动加载是tp框架的灵魂所在,也是成熟php框架的必备功 ...

  6. 让Lua自己把文件夹下面的所有文件自动加载起来吧

    没有想到我也做了一回标题党.其实这里边说的自动还是有夸大其词的部分.其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已. 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建 ...

  7. PHP 自动加载规范PSR-4

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  8. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  9. CI框架源码阅读笔记9 CI的自动加载机制autoload

    本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...

随机推荐

  1. 优先队列重载<运算符

    https://vjudge.net/problem/POJ-3190 #include<iostream> #include<cstdio> #include<queu ...

  2. 11、python阶段测试

    1.执行Python脚本的两种方式 如果想要永久保存代码,就要用文件的方式 如果想要调试代码,就要用交互式的方式 2.Pyhton单行注释和多行注释分别用什么? 单行注释:# 多行注释: '' &qu ...

  3. 修正mui的上拉加载和下拉刷新的一次未完成就执行下一次的请求

    有的用户会在第一次 上拉和下拉 事件未完成的时候,就执行第二次,第三次请求.... 提示文字也加上的位置动态计算,修改了mui的部份源码实现,我们的需求达到了 我们来看一下 腾讯新闻 的效果:

  4. Cocos Creator脚本开发事例

    HelloWorld.js window.Global = { gint: 168, }; cc.Class({ extends: cc.Component, properties: { label: ...

  5. Office365 OneDrive Geo Move

    Issue Description: 1. Connect to SPO Service. 2. Validate SPO Service OneDrive Geo move compatibilit ...

  6. 使用scp命令在多个Linux系统间进行文件复制

    一,什么是scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从 ...

  7. emacs 集成astyle

    https://stackoverflow.com/questions/8115460/emacs-save-excursion-not-restoring-point https://github. ...

  8. 【C++】解析C++运行环境的搭建

    在本篇文章中,笔者会谈谈如何搭建C++的运行环境.在不同操作系统中,运行C++编译器的命令也各不相同,最常用的编译器是GNU编译器(Linux系统)和微软Visual Studio编译器(Window ...

  9. 深入理解linux系统下proc文件系统内容

    深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...

  10. CentOS 7.5 安装KVM虚拟机(Windows)

    一.KVM环境搭建1.检测系统是否支持cat /proc/cpuinfo | egrep 'vmx|svm' KVM是基于x86虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,所以查 ...